
# 准备软件包、权重、训练数据集
训练前需要先上传模型权重、软件包和训练数据集到轻量算力集群指定目录，如下表所示。
表1上传文件和对应目录介绍 
| 文件             | 推荐目录                         | 说明                              |
|:---|:---|:---|
| 模型权重(可选)       | /mnt/sfs_turbo/model/{模型名称}  | 将/mnt/sfs_turbo定义成变量${work_dir} |
| AscendCloud软件包 | /mnt/sfs_turbo               | 将/mnt/sfs_turbo定义成变量${work_dir} |
| 训练数据集          | /mnt/sfs_turbo/training_data | 将/mnt/sfs_turbo定义成变量${work_dir} |
   
/mnt/sfs_turbo为宿主机中默认挂载SFS Turbo的工作目录，因此上传模型权重、软件包、训练数据集只需要在任意轻量算力集群的主机上执行即可。
 #### 步骤一：上传代码包和权重文件
1. 上传安装依赖软件训练代码AscendCloud-LLM-xxx.zip到主机中并解压，包获取路径请参见[表4](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_c_5910002.html#ZH-CN_TOPIC_0000002510000949__zh-cn_topic_0000002503660297_table1089622318254)，解压详解如下：
   ```
   cd ${work_dir}
   unzip AscendCloud-*.zip && unzip ./AscendCloud-LLM-*.zip
   ```
   
2. 将权重文件上传到服务器中。权重文件的格式要求为Huggingface格式。开源权重文件获取地址请参见[《训练框架开发指南》](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0167.html)中支持的模型列表章节。
3. 权重要求放在磁盘的指定目录，保证模型文件、权重文件（如LFS文件）已完整下载。
   ```
   cd ${work_dir}
   mkdir -p model/{模型名称}
   ```
   
4. 修改权重（tokenizer）文件，以下模型需修改，根据所选框架及模型修改相应文件，详情参考[《训练框架开发指南》](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0167.html)中的tokenizer文件说明章节。
 
#### 步骤二：上传数据到指定目录
不同框架下数据要求有差异，将预期的训练数据放在${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_c_5910038.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框架】数据预处理 关于数据集文件格式及配置，更多样例格式信息请参考[README.md](https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README.md)的内容，如果数据格式不符合要求则需要参考下文处理。否则，跳过此步骤。
   如果需要预处理数据，则更新代码目录下data/dataset_info.json文件。如使用以下示例数据集则预处理数据的命令如下。
   ```
   vim dataset_info.json
   ```
   新加配置参数如下：
   ```
   "alpaca_gpt4_data": {
       "file_name": "alpaca_gpt4_data.json"
     },
   ```
   样例截图：
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002470580706.png)
   
5. 【VeRL框架】数据预处理：
   VeRL框架要求所有用于训练的数据集都必须经过预处理。
   1. 根据模型类型选择[VeRL数据处理样例脚本](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_c_5910039.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_0000002503660567.png)
      
     
![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
MindSpeed框架下不需要手动做数据转换，通过训练yaml文件中的配置自动完成数据转换。
多机情况下，只有在rank_0节点进行数据预处理，转换权重等工作，所以原始数据集和原始权重，包括保存结果路径，都应该在共享目录下。
