更新时间:2024-05-17 GMT+08:00
分享

准备代码

本教程中用到的代码和权重文件如下表所示,请提前准备,并按要求在容器中创建工作目录。

获取代码和权重文件

表1 准备代码

代码包名称

代码说明

下载地址

AscendCloud-3rdLLM-6.3.904-xxx.zip

说明:

软件包名称中的xxx表示时间戳。

包含了本教程中使用到的模型训练代码、推理部署代码和推理评测代码。代码包具体说明请参见代码目录介绍

AscendSpeed是用于模型并行计算的框架,其中包含了许多模型的输入处理方法。

获取路径:Support-E网站

说明:

如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。

权重和词表文件

包含了本教程使用到的HuggingFace原始权重文件和Tokenizer。

标记器(Tokenizer)是NLP管道的核心组件之一。它们有一个目的:将文本转换为模型可以处理的数据。模型只能处理数字,因此标记器(Tokenizer)需要将文本输入转换为数字数据。

Qwen-14B-Chat

Qwen-7B-Chat

Qwen-72B-Chat

这个路径下既有权重,也有Tokenizer,全部下载。具体内容参见权重和词表文件介绍

本文档前向兼容AscendCloud-3rdLLM-6.3.T041版本,获取路径:Support网站

代码目录介绍

AscendCloud-3rdLLM代码包结构介绍如下:
xxx-Ascend                #xxx表示版本号
    ├──llm_evaluation  #推理评测代码包
          ├──benchmark_eval   #精度评测
          ├──benchmark_tools  #性能评测
    ├──llm_train       #模型训练代码包
          ├──AscendSpeed  #基于AscendSpeed的训练代码
                 ├──AscendSpeed  #加速库
                 ├──ModelLink   #基于ModelLink的训练代码
                 ├──scripts     #训练需要的启动脚本

本教程需要使用到的训练相关代码存放在llm_train/AscendSpeed目录下,具体文件介绍如下:

├──llm_train       #模型训练代码包
          ├──AscendSpeed   #基于AscendSpeed的训练代码
                 ├──AscendSpeed  #加速库 
                 ├──ModelLink   #基于ModelLink的训练代码和数据预处理脚本
                 ├──scripts    #训练需要的启动脚本,调用ModelLink                    
                         ├──qwen   #qwen的训练代码
                              ├──qwen.sh                 #qwen训练脚本    

权重和词表文件介绍

下载完毕后的HuggingFace原始权重文件包含以下内容,此处以Qwen-14B为例,仅供参考,以实际下载的最新文件为准。

qwen-14b
├── assets
├── cache_autogptq_cuda_256.cpp
├── cache_autogptq_cuda_kernel_256.cu
├── config.json
├── configuration_qwen.py
├── cpp_kernels.py
├── examples
├── generation_config.json
├── LICENSE
├── model-00001-of-00015.safetensors
├── model-00002-of-00015.safetensors
    ...
├── model-00014-of-00015.safetensors
├── model-00015-of-00015.safetensors
├── modeling_qwen.py
├── model.safetensors.index.json
├── NOTICE
├── qwen_generation_utils.py
├── qwen.tiktoken
├── README.md
├── tokenization_qwen.py
├── tokenizer_config.json

工作目录介绍

工作目录结构如下,以下样例都以Qwen-14B为例,请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B。

${workdir}(例如/home/ma-user/ws )
├──llm_train  
    ├── AscendSpeed              #代码目录
        ├── AscendSpeed          #训练依赖的三方模型库
        ├── ModelLink            #AscendSpeed代码目录
        ├── scripts             #训练启动脚本
├── processed_for_ma_input   
      ├── Qwen-14B           #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B
	      ├── data              #预处理后数据
		     ├── pretrain   #预训练加载的数据
		     ├── finetune   #微调加载的数据
	      ├──converted_weights  #HuggingFace格式转换magatron格式后权重文件
├── saved_dir_for_ma_output         #训练输出保存权重,根据实际训练需求设置
      ├── Qwen-14B           #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B
	      ├── logs              #训练过程中日志(loss、吞吐性能)
	      ├── lora              #lora微调输出权重
	      ├── sft               #增量训练输出权重
	      ├── pretrain          #预训练输出权重
├── tokenizers                      #原始权重及tokenizer目录
      ├── Qwen-14B           #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B
├── training_data                   #原始数据目录
      ├── pretrain                  #预训练加载的数据
              ├── train-00000-of-00001-a09b74b3ef9c3b56.parquet  #预训练原始数据文件
      ├── finetune                   #微调训练加载的数据
              ├── alpaca_gpt4_data.json                          #微调训练原始数据文件
     

上传代码到工作环境

  1. 使用root用户以SSH的方式登录DevServer。将AscendSpeed代码包AscendCloud-3rdLLM-xxx-xxx.zip上传到${workdir}目录下并解压缩,如:/home/ma-user/ws目录下,以下都以/home/ma-user/ws为例。
    unzip AscendCloud-3rdLLM-xxx-xxx.zip   #解压缩,-xxx-xxx表示软件包版本号和时间戳
  2. 上传tokenizers文件到工作目录中的/home/ma-user/ws/tokenizers/Qwen-{MODEL_TYPE}目录,如Qwen-14B。

    具体步骤如下:

    进入到${workdir}目录下,如:/home/ma-user/ws,创建tokenizers文件目录将权重和词表文件放置此处,以Qwen-14B为例。

    cd /home/ma-user/ws
    mkdir -p tokenizers/Qwen-14B
  3. 修改tokenizers/Qwen-{MODEL_TYPE}中的modelling_qwen.py脚本文件。如Qwen-14B:大约39行处SUPPORT_FP16的值。

    修改前:

    SUPPORT_FP16 = SUPPORT_CUDA and torch.cuda.get_device_capability(0)[0] >= 7

    修改后:

    SUPPORT_FP16 = True
分享:

    相关文档

    相关产品