
# 准备软件包、权重、训练数据集
训练前需要先上传模型权重、软件包和训练数据集到轻量算力节点指定目录，如下表所示。
表1上传文件和对应目录介绍 
| 文件                                                                                                                                                                                         | 推荐目录                         | 说明                              |
|:---|:---|:---|
| 模型权重                                                                                                                                                                                       | /mnt/sfs_turbo/model/{模型名称}  | 将/mnt/sfs_turbo定义成变量${work_dir} |
| AscendCloud软件包（包含AscendCloud-LLM代码包，具体参见[软件包结构](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590605.html#ZH-CN_TOPIC_0000002397247010__section890416191069)） | /mnt/sfs_turbo               | 将/mnt/sfs_turbo定义成变量${work_dir} |
| 训练数据集                                                                                                                                                                                      | /mnt/sfs_turbo/training_data | 将/mnt/sfs_turbo定义成变量${work_dir} |
   
/mnt/sfs_turbo为宿主机中默认挂载SFS Turbo的工作目录，因此上传模型权重、软件包、训练数据集只需要在Server服务器执行即可。
#### 步骤一：上传代码包和权重文件
1. 上传安装依赖软件训练代码AscendCloud-LLM-xxx.zip到主机中并解压，包获取路径请参见[表5](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590605.html#ZH-CN_TOPIC_0000002397247010__table1089622318254)，解压详解如下：
   ```
   cd ${work_dir}
   unzip AscendCloud-*.zip && unzip ./AscendCloud-LLM-*.zip
   ```
   
2. 将权重文件上传到轻量算力节点机器中。权重文件的格式要求为Huggingface格式。开源权重文件获取地址请参见[支持的模型列表](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590602.html)。
3. 权重要求放在磁盘的指定目录，保证模型文件、权重文件（如LFS文件）已完整下载。
   ```
   cd ${work_dir}
   mkdir -p model/{模型名称}
   ```
   
4. 修改权重（tokenizer）文件，以下模型需修改，根据所选框架及模型修改相应文件，详情参考[tokenizer文件说明](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590623.html#ZH-CN_TOPIC_0000002397247006__li7435143618294)。
   - Llama-Factory：glm4-9b模型、InternVL2_5系列模型
     
    
 
#### 步骤二：上传数据到指定目录
不同框架下数据要求有差异，将预期的训练数据放在${work_dir}/training_data目录下。具体步骤如下：
1. 创建目录training_data。
   ```
   cd ${work_dir}
   mkdir training_data
   ```
   
2. 获取数据集，并把指定数据上传至在${work_dir}/training_data目录下。
   - 途径1：数据参考[训练数据说明](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590624.html)进行下载。
   
   - 途径2：软件包中已预置部分数据集，可直接使用。
     ```
     tar -zxvf ${work_dir}/llm_train/AscendFactory/data.tgz
     cp  ${work_dir}/llm_train/AscendFactory/data/*  ${work_dir}/training_data
     ```
     
   
   - 途径3：用户已处理数据集。
    
3. 将原始数据或处理好的数据按照下面的数据存放目录要求放置，数据存放参考目录结构如下。
   ```
   ${work_dir}
     |── training_data
          |── alpaca_en_demo.json                   # 代码原有数据集
          |── identity.json                         # 代码原有数据集
          ...dat
          |── alpaca_gpt4_data.json                 # 自定义样例数据集
   ```
   
4. 【Llama-Factory框架】数据预处理
   - 需处理，更新代码目录下data/dataset_info.json文件。如使用以下示例数据集则命令如下。关于数据集文件格式及配置，更多样例格式信息请参考[README_zh.md](https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md) 的内容。
     ```
     vim dataset_info.json
     ```
     新加配置参数如下：
     ```
     "alpaca_gpt4_data": {
         "file_name": "alpaca_gpt4_data.json"
       },
     ```
     样例截图：
     ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002397247042.png)
     
   
   - 不需处理，数据准备结束。
    
5. 【VeRL框架】数据预处理：
   VeRL框架要求所有用于训练的数据集都必须经过预处理。
   1. 根据模型类型选择[VeRL数据处理样例脚本](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590625.html)内容拷贝至本地，命名为dataset_demo.py，编辑脚本中 datasets.load_dataset参数值，如下所示。
      ```
      dataset = datasets.load_dataset(xxx/xxx/xxx) #xxx/xxx/xxx值填写为原始数据集目录或文件的绝对或相对路径
      ```
      
   
   2. 下载数据集。
      ```
      git clone https://huggingface.co/datasets/hiyouga/geometry3k # 多模态数据集
      git clone https://huggingface.co/datasets/openai/gsm8k       # 大语言数据集
      ```
      
   
   3. 在本地执行以下命令转换数据集。
      ```
      python  dataset_demo.py --local_dir=/data/verl-workdir/data/xxx/
      ```
      --local_dir：数据处理输出后的数据集路径。
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002397406898.png)
      
     
![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
MindSpeed框架下不需要手动做数据转换，通过训练yaml文件中的配置自动完成数据转换。
多机情况下，只有在rank_0节点进行数据预处理，转换权重等工作，所以原始数据集和原始权重，包括保存结果路径，都应该在共享目录下。
