准备代码
本教程中用到的训练推理代码和如下表所示,请提前准备好。
获取模型软件包
本方案支持的模型对应的软件和依赖包获取地址如表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/ # 训练运行包 |──intall.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 #样例数据压缩包 |──intall.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节点进行数据预处理,转换权重等工作,所以原始数据集和原始权重,包括保存结果路径,都应该在共享目录下。