准备代码
本教程中用到的代码和权重文件如下表所示,请提前准备,并按要求在容器中创建工作目录。
获取代码和权重文件
代码包名称 |
代码说明 |
下载地址 |
---|---|---|
AscendCloud-3rdLLM-6.3.904-xxx.zip
说明:
软件包名称中的xxx表示时间戳。 |
包含了本教程中使用到的模型训练代码、推理部署代码和推理评测代码。代码包具体说明请参见代码目录介绍。 AscendSpeed是用于模型并行计算的框架,其中包含了许多模型的输入处理方法。 |
获取路径:Support-E网站。
说明:
如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
权重和词表文件 |
包含了本教程使用到的HuggingFace原始权重文件和Tokenizer。 标记器(Tokenizer)是NLP管道的核心组件之一。它们有一个目的:将文本转换为模型可以处理的数据。模型只能处理数字,因此标记器(Tokenizer)需要将文本输入转换为数字数据。 |
这个路径下既有权重,也有Tokenizer,全部下载。具体内容参见权重和词表文件介绍。 |
代码目录介绍
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 #微调训练原始数据文件
上传代码到工作环境
- 使用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表示软件包版本号和时间戳
- 上传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
- 修改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