# ModelLink_1 **Repository Path**: fengliangjun66/ModelLink_1 ## Basic Information - **Project Name**: ModelLink_1 - **Description**: 昇腾大模型仓库 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/ascend/ModelLink/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1111 - **Created**: 2024-04-17 - **Last Updated**: 2024-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

GitHub Documentation

简体中文 | English

ModelLink旨在为华为 [昇腾芯片](https://open.codehub.huawei.com/OpenBaize/Ascend/ascendspeed/files?ref=master&filePath=examples%2Fbaichuan%2Fpretrain_baichuan_zero_7B.sh&isFile=true) 上的大语言模型提供端到端的解决方案, 包含模型,算法,以及下游任务。 ## ModelLink解决方案概览 --- ### 支持功能 当前ModelLink支撑大模型使用功能: * [制作预训练数据集](#jump11)/[制作指令微调数据集](#jump12) * [预训练](#jump13)/[全参微调](#jump14)/[低参微调](#jump15) * [流式推理/人机对话](#jump16) * [评估基线数据集](#jump17) * [加速算法/融合算子/并行策略](#jump18) * [基于昇腾芯片采集Profiling数据](#jump19) * [Huggingface与Megatron-LM权重转换](#jump20) * [基于昇腾芯片的确定性计算功能](#jump21) 强化学习等特性持续研发中.... ### 支持模型 当前ModelLink支持下列模型的预训练以及微调:
模型 参数 序列 预训练 推理 LoRA SFT 对话 评估 贡献方
Aquila 7B 2K pretrain generate -- -- -- eval 【昇腾】
Aquila2 7B 2K pretrain generate -- -- -- eval 【社区】
34B 4K pretrain generate -- -- -- eval 【社区】
Baichuan 7B 4K pretrain generate -- -- -- eval 【昇腾】
13B 4K pretrain generate -- -- -- eval 【昇腾】
Baichuan2 7B 4K pretrain generate -- -- -- eval 【昇腾】
13B 4K pretrain generate -- -- -- eval 【昇腾】
Bloom 7B1 2K pretrain generate -- -- -- eval 【昇腾】
176B 2K pretrain generate -- -- -- eval 【昇腾】
ChatGLM3 6B 8K pretrain generate -- -- -- eval 【社区】
CodeLlama 34B 4K pretrain generate -- -- -- eval 【社区】
InternLM 7B 2K pretrain generate -- -- -- eval 【昇腾】
65B 2K pretrain -- -- -- -- -- 【昇腾】
LLaMA 7B 2K pretrain generate lora -- -- eval 【昇腾】
13B 2K pretrain generate lora -- -- eval 【昇腾】
33B 2K pretrain generate lora -- -- eval 【昇腾】
65B 2K pretrain generate lora -- -- eval 【昇腾】
LLaMA2 7B 4K pretrain generate lora -- -- eval 【昇腾】
13B 4K pretrain generate lora -- -- eval 【昇腾】
34B 4K pretrain generate lora -- -- eval 【昇腾】
70B 4K pretrain generate lora -- -- eval 【昇腾】
LLaMA3 8B 8K pretrain generate -- -- chat eval 【昇腾】
70B 8K pretrain generate -- -- -- eval 【昇腾】
Qwen 7B 8K pretrain generate -- -- -- eval 【昇腾】
14B 2K pretrain generate -- -- -- eval 【昇腾】
72B 8K pretrain generate -- -- -- eval 【昇腾】
Qwen1.5 0.5B 8K pretrain generate -- -- -- eval 【社区】
1.8B 8K pretrain generate -- -- -- eval 【社区】
4B 8K pretrain generate -- -- -- eval 【社区】
7B 8K pretrain generate -- -- -- eval 【社区】
14B 8K pretrain generate -- -- -- eval 【社区】
32B 8K pretrain generate lora -- -- eval 【社区】
72B 8K pretrain generate lora -- -- eval 【昇腾】
Yi 34B 4K pretrain generate -- -- -- eval 【社区】
Mixtral 8x7B 32K pretrain generate -- -- -- eval 【昇腾】
Mistral 7B 32K pretrain generate -- -- -- eval 【昇腾】
Gemma 2B 8K pretrain generate -- -- -- eval 【昇腾】
7B 8K pretrain generate lora -- -- eval 【昇腾】
GPT3 175B 2K pretrain -- -- -- -- -- 【社区】
### 脚本命名规则 | 脚本 | 规则 | |:-----------------:|:------:| | pretrain_xxx.sh | 预训练脚本 | | tune_xxx.sh | LoRA脚本 | | generate_xxx.sh | 推理脚本 | | xxxx_chat_xx.sh | 对话脚本 | | evaluation_xxx.sh | 评估脚本 | --- ## 模型版本与性能说明 上述列表中支持的模型,我们在[examples](./examples/)文件夹中提供了各模型的训练脚本和readme说明,里面有详细的模型训练、推理、评估流程。 【需要注意模型使用时的配套环境版本,参考如下】 | 软件 | [版本](https://www.hiascend.com/zh/) | | :-----------------------: |:----------------------------------:| | Python | 3.8 | | driver | 在研版本 | | firmware | 在研版本 | | CANN | 在研版本 | | torch | 2.1.0、2.2.0 | | torch_npu | 在研版本 | 【基于现版本我们实测的性能情况统计如下(硬件信息:Atlas 900 A2 PODc)】
模型 参数 序列 集群规模 精度模式 性能 参考性能
Aquila 7B 2K 1x8 BF16 2849 2874
Aquila2 7B 2K 1x8 FP16 3323 2673
34B 4K 2x8 BF16 854 732
Baichuan 7B 4K 1x8 FP16 2685 2036
13B 4K 1x8 FP16 1213 862
Baichuan2 7B 4K 1x8 BF16 2664 3969
13B 4K 1x8 BF16 1668 2062
Bloom 7B1 2K 1x8 FP16 2034 2525
176B 2K 12x8 BF16 100 107
ChatGLM3 6B 8K 1x8 FP16 4297 4267
CodeLlama 34B 4K 2x8 BF16 837 762
InternLM 7B 2K 1x8 BF16 2776 2854
65B 2K 4x8 BF16 341 414
LLaMA 7B 2K 1x8 FP16 3600 3804
13B 2K 1x8 FP16 1895 2012
33B 2K 4x8 FP16 621 776
65B 2K 4x8
BF16 348 426
LLaMA2 7B 4K 1x8 BF16 4200 3850
13B 4K 1x8 BF16 1990 1920
34B 4K 2x8 BF16 749 796
70B 4K 4x8 BF16 420 430
LLaMA3 8B 8K 1x8 BF16 2483 2674
70B 8K 8x8 BF16 283 355
Qwen 7B 8K 1x8 BF16 2499 2867
14B 2K 1x8 BF16 1560 1578
72B 8K 16x8 BF16 285 345
Qwen1.5 0.5B 8K 1x8 BF16 22834 25306
1.8B 8K 1x8 BF16 13029 12181
4B 8K 1x8 BF16 5033 5328
7B 8K 1x8 BF16 2862 2621
14B 8K 1x8 BF16 1717 1702
32B 8K 4x8 BF16 751 708
72B 8K 8x8 BF16 301 317
Yi 34B 4K 2x8 BF16 809 730
Mixtral 8x7B 32K 2x8 BF16 487 610
Mistral 7B 32K 1x8 BF16 2806 2734
Gemma 2B 8K 1x8 BF16 6821 7602
7B 8K 1x8 BF16 2938 2607
GPT3 175B 2K 16x8 FP16 153 --
--- ## 加速算法与融合算子 ModelLink支持张量并行、流水线并行、序列并行、重计算、分布式优化器等多种加速算法和融合算子,下表为各种加速特性对应的使能开关: | 加速特性 | 使能参数 | |:------------------------------------:|:------------------------------:| | 张量并行 | --tensor-model-parallel-size | | 流水线并行 | --pipeline-model-parallel-size | | 流水并行动态划分 | --num-layer-list | | 序列并行 | --sequence-parallel | | 重计算 | --recompute-granularity | | 分布式优化器 | --use-distributed-optimizer | | DDP allreduce 掩盖 | --overlap-grad-reduce | | Flash attention | --use-flash-attn | | Fused rmsnorm | --use-fused-rmsnorm | | Fused swiglu | --use-fused-swiglu | | mc2 | --use-mc2 | | Fused rotary
position embedding | --use-fused-rotary-pos-emb | | Sliding window attention | --sliding-window | ```bash torchrun $DISTRIBUTED_ARGS pretrain_gpt.py \ --tensor-model-parallel-size ${TP} \ --pipeline-model-parallel-size ${PP} \ --num-layer-list 1,2,2,2,1 \ --sequence-parallel \ --recompute-granularity full \ --recompute-method block \ --recompute-num-layers 72 \ --use-distributed-optimizer \ --use-flash-attn \ --use-fused-rmsnorm \ --use-fused-swiglu \ --overlap-grad-reduce \ --use-fused-rotary-pos-emb \ --use-mc2 \ --sliding-window 4096 \ ... \ ... ``` --- ## 基于昇腾芯片采集Profiling数据 Modellink支持基于昇腾芯片采集profiling数据,以提供对模型运行情况的分析,主要API如下: ```bash --profile # 打开profiling采集数据开关 --profile-step-start 5 # 指定开启采集数据的步骤 --profile-step-end 6 # 指定结束采集数据的步骤,实际采集步数为 end-start,不包含end --profile-ranks 0 1 2 3 4 # 指定采集数据的卡号,默认为0,可以设置为 0 1 2 3 4 5 6 7 8 9 列表指定全局卡号 --profile-level level2 # 数据采集水平,level0, 1, 2, 级别越高采集信息越多,默认为level0 --profile-with-cpu # 是否采集CPU数据,加入参数采集 --profile-with-stack # 采集指令运行堆栈,加入参数采集 --profile-with-memory # 是否采集内存,加入参数采集 --profile-record-shapes # 是否采集计算shape,加入参数采集 --profile-save-path ./profile_dir # profiling数据采集保存路径 ``` ## 基于昇腾芯片的确定性计算功能 昇腾芯片默认采用了不确定计算加速模型训练,有时为了重复实验与对比实验需要确定性的计算结果,ModelLink使能确定性计算的开关如下: - 启动命令中加入开关 ```shell --use-deter-comp ``` - 环境变量中加入开关 ```shell export HCCL_DETERMINISITIC=True ``` ## 致谢 --- ModelLink由华为公司的下列部门联合贡献 : - 昇腾计算产品部 - 计算算法部 - 计算研究部 - 开源计算工具部 - 公共开发部 - 全球技术服务部 感谢来自社区的每一个PR,欢迎贡献 ModelLink --- ## 安全声明 [ModelLink安全声明](https://gitee.com/ascend/ModelLink/wikis/%E5%AE%89%E5%85%A8%E5%A3%B0%E6%98%8E)