您现在的位置是:首页 > 文章详情

大语言模型本地部署与微调

日期:2024-10-27点击:133

Llama3

Ollama部署Llama3

Ollama的地址:https://github.com/ollama/ollama

Ollama是一个开源框架,旨在帮助用户在其本地计算机上轻松管理和部署大型语言模型(LLM)。它不仅仅支持Llama3,还支持阿里开源的千问2.5

部署Ollama

 conda create -n ollama python=3.10 conda activate ollama export OLLAMA_MODELS=/mnt/workspace/models curl -fsSL https://ollama.com/install.sh | sh

安装成功后执行

 ollama serve

另外开启一个终端运行

 ollama run llama3.2

Web方式访问

  • 单次会话

这里我们可以使用Postman来访问,访问地址

127.0.0.1:11434/api/generate,Post方式,json参数

 { "model":"llama3.2", "prompt":"为什么天空是蓝色的?", "stream": false }

这里的stream默认是true,对于web访问来说,它会一个字一个字的返回,为了方便观看结果,我这里设为了false。

  • 多轮会话

访问地址:127.0.0.1:11434/api/chat,Post方式,json参数

 { "model":"llama3.2", "messages":[ { "role":"user", "content":"为什么天空是蓝色的?" } ], "stream": false }

由于是多轮对话,我们可以继续写消息

 { "model":"llama3.2", "messages":[ { "role":"user", "content":"为什么天空是蓝色的?" }, { "role": "assistant", "content": "答案非常简单:因为地球的空气中含有大量的二氧化碳(CO2)和氮气(N2),这两个气体会与阳光中的紫外线发生反应,产生一种名为蓝色光的光波。这种现象被称为“气色效应”。\n\n在空气中,蓝色光是最主要的光波,而其他颜色的光则较弱。所以,当我们看到天空时,我们看到的是主要的蓝色光,因此我们的眼睛认为天空是蓝色的。\n\n不过,也有一个更复杂的理论——对比性理论,这个理论认为,天空看起来蓝色是因为它与地球表面的其他颜色相比,尤其是绿色和棕色。这两个颜色在日益减少的紫外线中更为明显,而蓝色则相对较弱。\n\n总之,天空的蓝色不是一个简单的物理现象,而是一个复杂的光学效应,需要我们考虑到多种因素。" }, { "role":"user", "content":"你能详细解释一下瑞利散射是如何工作的吗?" } ], "stream": false }

使用LlaMA-Factory微调llama3模型

LlaMA-Factory地址:https://github.com/hiyouga/LLaMA-Factory

LlaMA-Factory是一个用于大语言模型(LLM)微调的工具,旨在简化大语言模型的微调过程,使得用户可以快速的对模型进行训练和优化,以提高模型在特定任务上的性能。

这个工具支持多种预训练的大语言模型,例如LLaMA、LLaVA、Mixtral-MoE、QWen、Yi、Gemma、Baichuan、ChatGLM和Phi等。

特点:

  1. 支持多种微调方法:它集成了连续预训练,有监督微调(SFT),偏好对齐(RLHF)等多种微调方法。
  2. 高效的微调技术:与ChatGLM官方的P-Tuning微调相比,LLaMA Factory的LoRA微调提供了显著的加速比,并且在特定任务上取得了更高的性能分数。
  3. 易用性:LlaMA-Factory提供了高层次的抽象接口,使得开发者可以开箱即用,快速上手。
  4. WebUI支持:借鉴Stable Diffusion WebUI,该项目提供了基于gradio的网页工作台,方便初学者可以迅速上手操作。
  5. 模型导出和推理:支持模型导出和推理,包括动态合并LoRA模型进行推理。
  • 环境配置
 conda create -n llama_factory python=3.10 conda activate llama_factory git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[metrics] cd /mnt mkdir -p workspace/models cd workspace/models git clone https://www.modelscope.cn/models/LLM-Research/Llama-3.2-3B-Instruct.git

重新到https://www.modelscope.cn/models/LLM-Research/Llama-3.2-3B-Instruct/files下载这两个safetensors文件

并将其放入到/mnt/workspace/models/Llama-3.2-3B-Instruct文件夹中。

  • Lora微调
 cd LLaMA-Factory/examples/train_lora

修改llama3_lora_sft.yaml,内容如下

 ### model model_name_or_path: /mnt/workspace/models/Llama-3.2-3B-Instruct ### method stage: sft do_train: true finetuning_type: lora lora_target: q_proj,v_proj ### dataset dataset: alpaca_zh_demo template: llama3 cutoff_len: 1024 max_samples: 1000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: /mnt/workspace/models/llama-3.2-lora-zh logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 ### eval val_size: 0.1 per_device_eval_batch_size: 1 eval_strategy: steps eval_steps: 500

回到LLaMA-Factory主文件夹执行

 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

我们来看一下训练集中大致的内容,该训练集位于data目录下的alpaca_zh_demo.json,截取部分内容如下

 [ { "instruction": "识别并解释给定列表中的两个科学理论:细胞理论和日心说。", "input": "", "output": "细胞理论是生物科学的一个理论,它认为所有生命体都是由微小的基本单元——细胞所构成。这是生物学的一个基础理论,认为细胞是所有生物的基本结构和功能单位,所有的生物都是由一个或多个细胞组成,细胞只能通过细胞分裂产生新的细胞。这一理论由薛定谔、施瓦内和雪莱于1839年首次提出。\n\n日心说是指太阳是太阳系的中心,也就是说,行星围绕太阳旋转的理论。这个理论打破了传统的地心说观点,认为地球并不是宇宙的中心。日心说的提出者是尼古拉·哥白尼,他在16世纪初发表了他的著作《天体运行论》,阐述了太阳系行星围绕太阳运行的模型,为天文学的发展做出了巨大贡献。" }, { "instruction": "输入三支篮球队的名称并生成一个适当的口号。", "input": "输入:俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队。", "output": "输出: \"雷霆,公牛和网队:各显神通,角逐群雄!\"" }, { "instruction": "比较以下两位著名人物,使用特征列表并以句子形式提供输出。", "input": "人物1:阿尔伯特·爱因斯坦\n人物2:斯蒂芬·霍金\n特征:智力、教育、对世界的影响", "output": "阿尔伯特·爱因斯坦和斯蒂芬·霍金都是拥有极其出色智力的人物。两人都取得过非常高的教育成就,他们推进了科学发展并在世界范围内产生了深远的影响。爱因斯坦以其相对论和质能关系公式而闻名,而霍金以其关于黑洞和宇宙的发现而著称。两位科学家都以其深厚的学识和非凡的贡献影响了世界。" }, { "instruction": "请根据以下文章构建一个需要回答的问题。", "input": "", "output": "我不好意思,您没有提供任何信息或文章来供我根据它构建问题。 请提供相应的文章或信息,以便我能够帮助您构建问题。" }, { "instruction": "写一个关于上周末你做了什么的简短叙述。", "input": "", "output": "由于我是一个人工智能助手,所以我并不能真正的“做”什么事情。我的“工作”时间是24/7无休,确保我随时可供用户提供帮助和服务。所以在上周末,我一直都在“工作”,在响应用户的指令,帮助他们查询信息,执行操作,解决问题。" }, { "instruction": "创建一个程序,打印以下图案:", "input": "", "output": "您好!以下是一个打印指定图案的示例 Python 程序,它可以打印出一个类似字母“X”的图案。您可以使用程序中的一些规律性代码并对它进行更改,以打印您所需的图案。\n\n```python\nsize = 7\nfor row in range(size):\n for col in range(size):\n if row == col or row + col == size-1:\n print(\"*\", end=\" \")\n else:\n print(\" \",end=\" \")\n print()\n```\n\n输出:\n```\n* * \n * * \n * \n * * \n * * \n* *\n```" }, { "instruction": "分类以下数字系列。", "input": "输入:\n2、4、6、8", "output": "此系列数字为偶数序列。" }, { "instruction": "列出一个应该在野营应急包中的7件物品。", "input": "", "output": "这是一个我们应该在野营应急包中放置的7件物品列表:\n\n1. 先进救援包:用于治疗划痕,创伤,烧伤,刀伤等紧急情况。\n2. 多用途刀具:可用于切割,锯木,开瓶,刮刀等。\n3. 手电筒和备用电池:用于夜间照明。\n4. 火种:火柴或打火机,用于生火取暖或烹饪。\n5. 压缩饼干和能量棒:紧急能量补给。\n6. 可充电无线收音机:用于接收天气预报或求救信号。\n7. 防水雨衣和毛毯:用于防止降雨和保暖。" }, ... ]

如果我们要训练自己的专业领域数据集,也需要按照这种格式进行构建。

  • 模型推理

修改LLaMA-Factory/examples/inference/llama3_lora_sft.yaml,内容如下

 model_name_or_path: /mnt/workspace/models/Llama-3.2-3B-Instruct adapter_name_or_path: /mnt/workspace/models/llama-3.2-lora-zh template: llama3 finetuning_type: lora

在LLaMA-Factory主目录下执行

 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml

推理结果如下图所示

原文链接:https://my.oschina.net/u/3768341/blog/16491754
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章