AutoDL精调Llama系列模型(SFT+UI简单操作)

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934


   在AutoDL平台创建实例,借助llama-factory工具,高效精调大模型,实现资源优化与性能提升,助力AI项目落地。
  
一、准备实例(AutoDL)



JupyterLab方式


连接Vscode(ssh)


二、准备微调

1.部署安装Llama-Factory

参考:使用 LLaMA Factory 举行大语言模型微调
  1. # 克隆仓库
  2. git clone https://github.com/hiyouga/LLaMA-Factory.git
  3. # 创建虚拟环境
  4. conda create -n llama_factory python=3.10
  5. # 激活虚拟环境
  6. conda activate llama_factory
  7. # 安装依赖
  8. cd LLaMA-Factory
  9. pip install -r requirements.txt
复制代码
2.下载模型

方法一:huggingface

  1. # Make sure you have git-lfs installed (https://git-lfs.com)
  2. git lfs install
  3. git clone https://huggingface.co/hiyouga/Llama-2-Chinese-13b-chat
  4. # If you want to clone without large files - just their pointers
  5. GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/hiyouga/Llama-2-Chinese-13b-chat
复制代码
  注意:Autodl科学上网 Autodl学术资源加快
  1. # 在终端中使用
  2. source /etc/network_turbo
  3. # 在Notebook中使用
  4. import subprocess
  5. import os
  6. result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
  7. output = result.stdout
  8. for line in output.splitlines():
  9.     if '=' in line:
  10.         var, value = line.split('=', 1)
  11.         os.environ[var] = value
  12. # 取消学术加速
  13. unset http_proxy && unset https_proxy
复制代码

方法二:魔塔社区

  1. from modelscope import snapshot_download
  2. model_path="modelscope/Llama2-Chinese-13b-Chat-ms"
  3. cache_path="model/Llama2-Chinese-13b-Chat"
  4. snapshot_download(model_path, cache_dir=cache_path)
复制代码
  注意:假如你是使用 AutoDL 举行部署的话,在conda activate llama_factory之前须要先执行一下conda init bash命令来初始化一下 conda 环境,然后重新打开一个终端窗口,再执行conda activate llama_factory命令。
  3.开始微调

启动 LLaMA Factory 的 WebUI 页面,执行命令如下:
  1. CUDA_VISIBLE_DEVICES=0,1 python src/webui.py #两卡,若一卡就写对应卡号即可
复制代码
(1)将模型路径更改为你下载的路径

  1. 模型路径:/root/autodl-tmp/pre_work/model/Llama3-8B-Chinese-Chat/LLM-Research/Llama3-8B-Chinese-Chat
  2. 数据集路径:/root/LLaMA-Factory/data
  3. 输出目录:/root/autodl-tmp/pre_work/output/result/8b_train_2024-11-27-14-54-31
  4. yaml目录:/root/autodl-tmp/pre_work/output/yaml/8b_2024-11-27-14-54-31.yaml
复制代码

在微调方法中,可以选择full、freeze、lora,若要适用qlora则选择量化等级,并在UI界面的对应位置(默认菜单已折叠)调整对应参数。
(2)制作自己的数据集

(仔细阅读LLaMA-Factory/data/README_zh.md,下以指令监视微调数据集为例)
样例数据集:(alpaca_zh_demo.json),instruction 列对应的内容会与 input 列对应的内容拼接后作为人类指令,即人类指令为 instruction\ninput。而 output 列对应的内容为模型回复。
假如指定,system 列对应的内容将被作为系统提示词。history 列是由多个字符串二元组构成的列表,分别代表汗青消息中每轮对话的指令和回复。注意在指令监视微调时,汗青消息中的回复内容也会被用于模型学习
  1. [
  2.   {
  3.     "instruction": "人类指令(必填)",
  4.     "input": "人类输入(选填)",
  5.     "output": "模型回答(必填)",
  6.     "system": "系统提示词(选填)",
  7.     "history": [
  8.       ["第一轮指令(选填)", "第一轮回答(选填)"],
  9.       ["第二轮指令(选填)", "第二轮回答(选填)"]
  10.     ]
  11.   }
  12. ]
复制代码
对于上述格式的数据,dataset_info.json 中的数据集形貌应为:
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "columns": {
  4.     "prompt": "instruction",
  5.     "query": "input",
  6.     "response": "output",
  7.     "system": "system",
  8.     "history": "history"
  9.   }
  10. }
复制代码
(3)修改保存路径


(4)微调参数

参考:Llama2技能细节&开源影响-SFT参数


注意


  • 微调的时候要注意模型须要的显存大小,否则就会“CUDA Out Of Memory”

  • 单机多卡、多机多卡等多种分布式训练方式
    Llama-factory分布式训练

三、测试、对话、导出模型

依次操作即可

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表