Llama 3.2-3B-Instruct PyTorch模型微调最佳实践

打印 上一主题 下一主题

主题 1934|帖子 1934|积分 5802

引言

     Meta Llama 3.2多语言大型语言模型聚集(LM)是一个1B和3B大小(文本输入/文本输出)的预训练和指令微调模型聚集。Llama 3.2指令调解的纯文本模型针对多语言对话用例举行了优化,包括智能检索和总结使命。它们在常见的行业基准上优于很多可用的开源和闭源聊天模型。
     环境预备

     安装Ascend CANN Toolkit和Kernels

     安装方法请参考 安装教程或使用以下命令。
                                   登录后复制                        
  1. # 请替换URL为CANN版本和设备型号对应的URL
  2. # 安装CANN Toolkit
  3. wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run
  4. bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install
  5. # 安装CANN Kernels
  6. wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run
  7. bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install
  8. # 设置环境变量
  9. source /usr/local/Ascend/ascend-toolkit/set_env.sh
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
                       安装openMind Library以及openMind Hub Client

     

  • 安装openMind Hub Client
                                   登录后复制                        
  1. pip install openmind_hub
复制代码
      

  • 1.
                       

  • 安装openMind Library,并安装PyTorch框架及其依靠。
                                   登录后复制                        
  1. pip install openmind[pt]
复制代码
      

  • 1.
                       更具体的安装信息请参考openMind官方的 环境安装章节。
     安装llama-factory

                                   登录后复制                        
  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. cd LLaMA-Factory
  3. pip install -e ".[torch-npu,metrics]"
复制代码
      

  • 1.
  • 2.
  • 3.
                       模型链接和下载

     Llama-3.2-3B模型系列由社区开发者在魔乐社区贡献,包括:
     

  • Llama-3.2-3B: https://modelers.cn/models/AI-Research/Llama-3.2-3B
  • Llama-3.2-3B-Instruct: https://modelers.cn/models/AI-Research/Llama-3.2-3B-Instruct
     通过Git从魔乐社区下载模型的repo,以Llama-3.2-3B-Instruct为例:
                                   登录后复制                        
  1. # 首先保证已安装git-lfs(https://git-lfs.com)
  2. git lfs install
  3. git clone https://modelers.cn/AI-Research/Llama-3.2-3B-Instruct.git
复制代码
      

  • 1.
  • 2.
  • 3.
                       模型推理

     用户可以使用openMind Library大概LLaMa Factory举行模型推理,以Llama-3.2-3B-Instruct为例,具体如下:
     

  • 使用openMind Library举行模型推理
     新建推理脚本inference_llama3.2_3b_chat.py,推理脚本内容为:
                                   登录后复制                        
  1. import argparse
  2. import torch
  3. from openmind import pipeline
  4. from openmind_hub import snapshot_download
  5. def parse_args():
  6.     parser = argparse.ArgumentParser()
  7.     parser.add_argument(
  8.         "--model_name_or_path",
  9.         type=str,
  10.         help="Path to model",
  11.         default=None,
  12.     )
  13.     args = parser.parse_args()
  14.     return args
  15. def main():
  16.     args = parse_args()
  17.     if args.model_name_or_path:
  18.         model_path = args.model_name_or_path
  19.     else:
  20.         model_path = snapshot_download("AI-Research/Llama-3.2-3B-Instruct", revision="main", resume_download=True,
  21.                                     ignore_patterns=["*.h5", "*.ot", "*.mspack"])
  22.     pipe = pipeline(
  23.         "text-generation",
  24.         model=model_path,
  25.         torch_dtype=torch.bfloat16,
  26.         device_map="auto",
  27.     )
  28.     messages = [
  29.         {"role": "system", "content": ""},
  30.         {"role": "user", "content": "你是谁"},
  31.     ]
  32.     outputs = pipe(
  33.         messages,
  34.         max_new_tokens=256,
  35.     )
  36.     print(outputs[0]["generated_text"][-1])
  37. if __name__ == "__main__":
  38.     main()
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
                       实行推理脚本:
                                   登录后复制                        
  1. python inference_llama3.2_3b_chat.py
复制代码
      

  • 1.
                       推理结果如下:
     

     

  • 使用LLaMa Factory与模型交互
     在LLaMa Factory路径下新建examples/inference/llama3.2_3b_chat.yaml推理配置文件,文件内容为:
                                   登录后复制                        
  1. model_name_or_path: xxx # 当前仅支持本地加载,填写Llama-3.2-3B-Instruct本地权重路径
  2. template: llama3
复制代码
      

  • 1.
  • 2.
                       使用以下命令与模型举行交互:
                                   登录后复制                        
  1. llamafactory-cli examples/inference/llama3.2_3b_chat.yaml
复制代码
      

  • 1.
                       交互结果如下:
     

     模型微调

     数据集

     使用Llama-Factory集成的identity数据集。
     修改data/identity.json,将{{name}}替换为openmind,{{author}}替换为shengteng。
     微调

     新建examples/train_lora/llama3.2_3b_lora_sft.yaml 微调配置文件,微调配置文件如下:
                                   登录后复制                        
  1. ### model
  2. model_name_or_path: xxx/xxx  # 预训练模型路径
  3. ### method
  4. stage: sft
  5. do_train: true
  6. finetuning_type: lora
  7. lora_target: all
  8. ### dataset
  9. dataset: identity
  10. template: llama3
  11. cutoff_len: 1024
  12. overwrite_cache: true
  13. preprocessing_num_workers: 16
  14. ### output
  15. output_dir: ./saves/llama3.2-3b/lora/sft
  16. logging_steps: 10
  17. save_steps: 500
  18. plot_loss: true
  19. overwrite_output_dir: true
  20. ### train
  21. per_device_train_batch_size: 1
  22. gradient_accumulation_steps: 8
  23. learning_rate: 1.0e-4
  24. num_train_epochs: 3.0
  25. lr_scheduler_type: cosine
  26. warmup_ratio: 0.1
  27. bf16: true
  28. ddp_timeout: 180000000
  29. ### eval
  30. val_size: 0.1
  31. per_device_eval_batch_size: 1
  32. eval_strategy: steps
  33. eval_steps: 500
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
                       使用以下命令举行微调:
                                   登录后复制                        
  1. llamafactory-cli train examples/train_lora/llama3.2_3b_lora_sft.yaml
复制代码
      

  • 1.
                       微调可视化

     

  • 训练Loss可视化:
     

     微调后推理

     模型推理

     修改examples/inference/llama3.2_3b_lora_sft.yaml推理配置文件,文件内容为:
                                   登录后复制                        
  1. model_name_or_path: xxx # 当前仅支持本地加载,填写Llama-3.2-3B-Instruct本地权重路径
  2. adapter_name_or_path: ./saves/llama3.2-3b/lora/sft
  3. template: llama3
复制代码
      

  • 1.
  • 2.
  • 3.
                       使用以下命令举行推理:
                                   登录后复制                        
  1. llamafactory-cli chat examples/inference/llama3.2_3b_lora_sft.yaml
复制代码
      

  • 1.
                       推理结果:
     

     结语

     应用使能套件openMind在华为全联接大会2024的展示吸引了我们的注意。通过专家们的分享,得以相识魔乐社区,也相识到openMind在此中发挥的技能能力和未来发展。
     通过本次微调的实践,更能体会到openMind套件的魅力。它让微调过程变得更加高效和直观,渴望每一位开发者都来尝试它,一起交换经验,更好地提升它的能力。
     相干链接:
      [1] openMind Library先容:< https://modelers.cn/docs/zh/openmind-library/overview.html>
     [2] openMind Hub Client先容:< https://modelers.cn/docs/zh/openmind-hub-client/overview.html>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表