准备代码
本教程中用到的训练推理代码和如下表所示,请提前准备好。
获取模型软件包
本方案支持的模型对应的软件和依赖包获取地址如表1所示,模型列表、对应的开源权重获取地址如表1 支持的模型列表所示。
获取模型权重文件
获取对应模型的权重文件,获取链接参考表1。
权重文件下载有如下几种方式,但不仅限于以下方式:
- 方法一:网页下载:通过单击表格中权重文件获取地址的访问链接,即可在模型主页的Files and Version中下载文件。
- 方法二:huggingface-cli:huggingface-cli是 Hugging Face 官方提供的命令行工具,自带完善的下载功能。具体步骤可参考:HF-Mirror中的使用教程。完成依赖安装和环境变量配置后,以Llama2-70B为例:
huggingface-cli download --resume-download meta-llama/Llama-2-70b-chat-hf --local-dir <模型下载路径>
如果要下载指定版本的模型文件,则命令如下:
huggingface-cli download --resume-download meta-llama/Llama-2-70b-chat-hf --revision <模型版本> --local-dir <模型下载路径>
- 方法三:使用专用多线程下载器hfd:hfd 是本站开发的huggingface专用下载工具,基于成熟工具git+aria2,可以做到稳定下载不断线。
- 方法四:使用Git clone,官方提供了git clone repo_url的方式下载,但是不支持断点续传,并且clone会下载历史版本占用磁盘空间。
模型软件包结构说明
|——AscendCloud-LLM
|──llm_train # 模型训练代码包
|──AscendFactory
|──examples/ # config配置文件目录
|──data.tgz # 样例数据压缩包
|──third-party/ # patch包
|──src/acs_train_solution/ # 训练运行包
|──install.sh # 需要的依赖包
|──scripts_llamafactory/ # llamafactory兼容旧版本启动方式目录
|──scripts_modellink/ # modelLink兼容旧版本启动方式目录
|──Dockerfile
工作目录介绍
${workdir}(例如/home/ma-user/ws )
|──llm_train # 模型训练代码包
|──AscendFactory
|──config/ # 配置文件
|──deepspeed/
|──modellink_performance_cfgs.yaml # 性能训练配置yaml文件
|──modellink_accuracy_cfgs.yaml # 精度训练配置yaml文件
|──modellink_performance_baseline.yaml # 性能基线训练文件
|──modellink_accuracy_baseline.yaml # 精度基线训练文件
|──data.tgz #样例数据压缩包
|──install.sh # 需要的依赖包
|──scripts_modellink/ # modelLink兼容旧版本启动方式目录
|──llama3 # llama3系列模型执行脚本的文件夹
|──qwen2.5 # Qwen2.5系列模型执行脚本的文件夹
|── ...
|── dev_pipeline.sh # 系列模型共同调用的多功能的脚本
|──third-party/ # patch包
|──src/acs_train_solution/ # 训练运行包
|──ascendcloud_patch/ # patch补丁包
|──benchmark/ #工具包,存放数据集及基线数据
|──trainer.py # 训练启动脚本
|──performance.py # benchmark训练性能比较启动脚本
|──accuracy.py # benchmark训练精度启动脚本
|──model/Qwen2-7B/ # 权重词表文件目录,如Qwen2-7B
|──training_data # 原始数据目录
|──alpaca_gpt4_data.json # 微调数据
|──train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练数据
|──{output_dir} #{OUTPUT_SAVE_DIR}或yaml文件{output_dir}参数设置值
# 自动生成数据目录结构
|── preprocessed_data
|──converted_hf2mg_weight_TP${TP}PP${PP}
|──checkpoint # 训练完成生成目录Qwen2-7B,自动生成
上传代码和权重文件到工作环境
- 使用root用户以SSH的方式登录Server。
- 将AscendCloud代码包AscendCloud-xxx-xxx.zip上传到${workdir}目录下并解压缩,如:/home/ma-user/ws目录下,以下都以/home/ma-user/ws为例,请根据实际修改。
unzip AscendCloud-*.zip && unzip ./AscendCloud/AscendCloud-LLM-*.zip
- 上传tokenizers文件到工作目录中的/home/ma-user/ws/tokenizers/Llama2-{MODEL_TYPE}目录,如Llama2-70B。
进入到${workdir}目录下,如:/home/ma-user/ws,创建tokenizers文件目录将权重和词表文件放在此处,以Llama2-70B为例。
cd /home/ma-user/ws mkdir -p tokenizers/Llama2-70B
多机情况下,只有在rank_0节点进行数据预处理,转换权重等工作,所以原始数据集和原始权重,包括保存结果路径,都应该在共享目录下。