准备代码
本教程中用到的模型软件包如下表所示,请提前准备好。
获取模型软件包
本方案支持的模型对应的软件和依赖包获取地址如表1所示。
代码包名称 |
代码说明 |
下载地址 |
---|---|---|
AscendCloud-6.3.907-xxx.zip
说明:
软件包名称中的xxx表示时间戳。 |
包含了本教程中使用到的模型训练代码。代码包具体说明请参见模型软件包结构说明。 |
获取路径:Support-E
说明:
如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
模型软件包结构说明
|──llm_train # 模型训练代码包 |──AscendSpeed # 基于AscendSpeed的训练代码 |──ascendcloud_patch/ # 针对昇腾云平台适配的功能补丁包 |──scripts/ # 训练需要的启动脚本 |──llama2 # llama2系列模型执行脚本的文件夹 |──llama3 # llama3系列模型执行脚本的文件夹 |──qwen # Qwen系列模型执行脚本的文件夹 |──qwen1.5 # Qwen1.5系列模型执行脚本的文件夹 |── ... |── dev_pipeline.sh # 系列模型共同调用的多功能的脚本 |── install.sh # 环境部署脚本 |——src/ # 启动命令行封装脚本,在install.sh里面自动构建 |──llm_inference # 推理代码包 |──llm_tools # 推理工具
修改代码
将AscendSpeed代码包AscendCloud-LLM-xxx.zip在本地解压缩后。在上传代码前,需要对解压后的训练脚本代码进行修改。具体文件为:llm_train/AscendSpeed/scripts/obs_pipeline.sh,具体修改代码内容以及位置,如下所示。
- 训练作业中存在2个代码目录,一个是从OBS上传到ModelArts Standard训练容器中的代码目录OBS_CODE_DIR,一个是后续构建新镜像步骤ECS中构建新镜像(二选一)中镜像的代码目录CODE_DIR。修改代码如图1。
- 使用环境变量SAVE_PATH重新覆盖权重文件保存路径,作为最终的权重保存路径。修改代码如图2。
- 多机训练场景下,需要将CODE_DIR修改为OBS_CODE_DIR目录,则可以使用scripts/tools/sync_with_obs.py工具将其它节点的权重文件同步上传到主节点。修改代码如图3。
代码上传至OBS
将llm_train文件上传至OBS中。
结合准备数据、准备权重、准备代码,将数据集、原始权重、代码文件都上传至OBS后,OBS桶的目录结构如下。
<bucket_name> |──llm_train # 解压代码包后自动生成的代码目录,无需用户创建 |── AscendSpeed # 代码目录 |──ascendcloud_patch/ # 针对昇腾云平台适配的功能代码包 |──scripts/ # 训练需要的启动脚本 # 以下目录结构,用户自己创建 |── training_data #原始数据目录,需要用户手动创建并上传,后续操作步骤中会提示 |── train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练时预处理后的数据存放地址 |── alpaca_gpt4_data.json #微调数据文件 |── models #原始权重及tokenizer目录,需要用户手动创建并上传,后续操作步骤中会提示 ├── llama2-13b-hf |── tokenizers #tokenizer目录,需要用户手动创建,后续操作步骤中会提示 |── llama2-13b-hf