大模型国产化适配4基于昇腾910使用LLaMA13B进行多机多卡训练随着ChatGPT的现象级走红,引领了AI

>pythonalpaca_converter.py\--data_path/home/workspace/data/alpaca_data.json\--output_path/home/workspace/data/alpaca-data-conversation.json>tree-h/home/workspace/data/home/workspace/data├──[35M]alpaca-data-conversation.json└──[22M]alpaca_data.json转换前格式:

[{"instruction":"Givethreetipsforstayinghealthy.","input":"","output":"1.Eatabalanceddietandmakesuretoincludeplentyoffruitsandvegetables.\n2.Exerciseregularlytokeepyourbodyactiveandstrong.\n3.Getenoughsleepandmaintainaconsistentsleepschedule."},{"instruction":"Whatarethethreeprimarycolors","input":"","output":"Thethreeprimarycolorsarered,blue,andyellow."},]转换后格式:

[{"id":"1","conversations":[{"from":"human","value":"Belowisaninstructionthatdescribesatask.Writearesponsethatappropriatelycompletestherequest.\n\n###Instruction:\nGivethreetipsforstayinghealthy.\n\n###Response:"},{"from":"gpt","value":"1.Eatabalanceddietandmakesuretoincludeplentyoffruitsandvegetables.\n2.Exerciseregularlytokeepyourbodyactiveandstrong.\n3.Getenoughsleepandmaintainaconsistentsleepschedule."}]},{"id":"2","conversations":[{"from":"human","value":"Belowisaninstructionthatdescribesatask.Writearesponsethatappropriatelycompletestherequest.\n\n###Instruction:\nWhatarethethreeprimarycolors\n\n###Response:"},{"from":"gpt","value":"Thethreeprimarycolorsarered,blue,andyellow."}]},]模型准备及模型格式转换本文使用LLaMA-13B作为多机多卡训练的基座模型,关于LLaMA的介绍已经太多,这里不再赘述,下面下载LLaMA-13B模型权重文件并换成HuggingFaceTransformers格式,有以下两种方案。

模型和数据集准备好之后,我们先来看一下基于昇腾910的AI集群的网络通信。

昇腾910通过自研的集合通信库(HCCL)整合了三种高速互联接口:PCIe、RoCEv2以及HCCS。通常情况下,NPU与CPU之间采用PCIe进行通信,服务器内的NPU之间则采用HCCS(组间)或PCIe(组间)进行通信,而服务器之间使用RoCE进行通信。

下面我们使用MindSpore进行多机多卡训练。

对于驱动、固件以及CANN工具集的安装和之前在昇腾910上面安装方式基本一致,找到对应版本的驱动、固件以及CANN工具集进行安装即可。

创建新的虚拟环境:

condacreate-nllama_clusterpython=3.7.5condaactivatellama_cluster安装MindSpore和MindFormers(MindSporeTransformers的简称)。

pipinstalltorchtransformers模型权重格式转换将HuggingfaceTransformers模型权重格式转换成MindFormers权重格式。

cd/home/workspace/code/mindformerspythonmindformers/models/llama/convert_weight.py\--torch_ckpt_dir/home/workspace/model/vicuna-13B\--mindspore_ckpt_path/home/worspace/model/vicuna-13B-ms数据集格式转换使用MindFormers进行模型训练时,需先将带有Prompt模板的数据集转换为MindRecord格式。

cd/home/workspace/code/mindformers/mindformers/tools/dataset_preprocess/llamapythonllama_preprocess.py\--input_glob'/home/workspace/data/alpaca-data-conversation.json'\--dataset_typeqa\--model_file/home/workspace/model/tokenizer.model\--seq_length1024\--repeat3\--shuffle1\--output_file/home/workspace/data/alpaca-fastchat1024.mindrecord参数说明:

首先,在每台服务器上面生成用于Ascend芯片分布式通信的芯片资源信息配置文件(RANK_TABLE_FILE)。AscendHCCL的RANK_TABLE_FILE文件提供Ascend分布式训练作业的集群信息。

python./mindformers/tools/hccl_tools.py--device_num"[0,8)"--server_ip=90.90.3.xxpython./mindformers/tools/hccl_tools.py--device_num"[0,8)"--server_ip=90.90.3.yy然后,合并每个机器上的RANK_TABLE_FILE文件。可以使用官网提供的脚本merge_hccl.py进行合并,也可以手动进行合并。

python./mindformers/tools/merge_hccl.pyhccl*.json合并后的文件如下所示。

{"version":"1.0","server_count":"2","server_list":[{"server_id":"90.90.3.xx","device":[{"device_id":"0","device_ip":"10.0.0.36","rank_id":"0"},...{"device_id":"7","device_ip":"10.0.0.48","rank_id":"7"}],"host_nic_ip":"reserve"},{"server_id":"90.90.3.yy","device":[{"device_id":"0","device_ip":"10.0.0.37","rank_id":"8"},...{"device_id":"7","device_ip":"10.0.0.49","rank_id":"15"}],"host_nic_ip":"reserve"}],"status":"completed"}之后,将合并后的RANK_TABLE_FILE文件分别复制到所有的机器上。

下面修改配置文件configs/llama/run_llama_13B.yaml将only_save_strategy改为True;同时,修改并行策略,目前支持纯数据并行(类似DeepSpeed的ZeRO3,会对模型进行切分)进行训练。

only_save_strategy:Trueparallel_config:data_parallel:16model_parallel:1pipeline_stage:1然后,启动训练任务生成模型切分策略文件。

#server1:cdscriptsbashrun_distribute.sh../hccl_2s_16p.json../configs/llama/run_llama_13b.yaml[0,8]train16#server2:cdscriptsbashrun_distribute.sh../hccl_2s_16p.json../configs/llama/run_llama_13b.yaml[8,16]train16根据策略文件,切分模型。

python./mindformers/tools/transform_ckpt.py\--src_ckpt_strategy''\--dst_ckpt_strategyoutput/strategy/ckpt_strategy_rank_0.ckpt\--src_ckpt_dir/home/zk/workspace/model/\--dst_ckpt_dir/home/zk/workspace/model/ckpt-multi-node\--prefix"checkpoint_"参数说明:

模型切分完成之后,接下来,修改配置文件configs/llama/run_llama_13B.yaml中,模型权重文件路径、数据集路径、模型超参数等配置信息。

#配置环境变量,使能GE,MS_GE_ATOMIC_CLEAN_POLICY算子内存复用,并将HCCL通信超时增大到600sexportMS_ENABLE_GE=1exportMS_GE_TRAIN=1exportMS_GE_ATOMIC_CLEAN_POLICY=1exportHCCL_CONNECT_TIMEOUT=600#server1:cdscriptsbashrun_distribute.sh../hccl_2s_16p.json../configs/llama/run_llama_13b.yaml[0,8]train16#server2:cdscriptsbashrun_distribute.sh../hccl_2s_16p.json../configs/llama/run_llama_13b.yaml[8,16]train16运行日志:

目前,在昇腾上面针对MindSpore和PyTorch框架的支持是不同的团队支持。因此,驱动、固件以及CANN工具集目前还没有办法使用同一套。因此,需要根据官方的要求选择对应的版本进行重新安装,安装方式和之前在昇腾910上面安装方式基本一致。

为了避免之前的环境干扰,创建新的虚拟环境:

condacreate-nllama_pytorch_clusterpython=3.7.5condaactivatellama_pytorch_cluster安装依赖。

pip3install--upgradepippip3installeinopssympyregexdecoratorscipysetuptoolsscmprompttoolkit安装PyTorch和PyTorch的适配插件torch_npu。

training_args.py->transformers/training_args.putrainer.py->transformers/trainer.pyversions.py->utils/versions.pymodeling_llama.py->transformers/models/llama/modeling_llama.py模型训练下面进行模型训练,本文使用Pytorch原生方式启动训练任务(除此之外,还可以采用DeepSpeed命令进行启动,需先安装pdsh,同时配置hostfile。)

显存占用:

当然,目前来看,AI框架趋于收敛,大模型算法架构也趋于收敛,对于像华为昇腾这样的AI软硬件平台发展其生态来说是好事,不需要疲于拼命做太多AI框架和模型的适配工作。

THE END
1.CHATGPT对算力的需求如何颠覆芯片的底层架构设计,存算一体,正是突破算力瓶颈、摆脱存储宽带限制的一条路径。关键词之一,是顺势。 大部分读者都知道,算法、算力和数据是大模型时代的三大基础要素,ChatGPT引爆了算力要求的“核聚变”。当摩尔定律已经被逼近物理极限,如何突破算力瓶颈已成为业界重点突围的方向之一,因为模型计算量的增长速度,已经远http://www.hlwwhy.com/ask/6690483.html
2.ChatGPT价格里掩盖的算力分布秘密新程序员【导读】当前,大语言模型的商业化持续进行,本文聚焦这一变革背景下的 ChatGPT 定价机制,深入剖析其核心技术内涵。通过细致研究 ChatGPT-3.5 turbo 采用的 Decode-Only 架构,作者系统地探讨了模型在接收到输入提示并生成相应输出的过程中,如何差异化利用 GPU 算力资源,进而阐明了支撑该定价策略的独特技术原理。 https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/136265725
3.投资者提问:CHATGPT时代来临,对算力要求将巨幅提高,请问公司在CHATGPT时代来临,对算力要求将巨幅提高,请问公司在提高算力上有什么技术吗? 董秘回答(网宿科技SZ300017): 投资者,你好。公司自成立来坚持深耕数字经济基础设施层与平台层,包括数据中心,混合云和云管平台,CDN,云安全及边缘计算平台等。通过提供计算、存储、网络及安全等新一代信息技术服务,助力互联网客户、政府及企业https://finance.sina.cn/stock/relnews/dongmiqa/2023-03-09/detail-imykhfhw9958631.d.html
4.ChatGPT服务器,深度拆解AI大模型训练需求火热,智能算力规模增长有望带动AI服务器放量。 ChatGPT发布之后,引发了全球范围的关注和讨论,国内各大厂商相继宣布GPT模型开发计划。据各公司官网,2023年2月7日,百度宣布将推出ChatGPT类似产品“文心一言”,预计今年3月展开内测;2月8日阿里宣布阿里版ChatGPT正在研发中,目前处于内测阶段;2月9日,字节https://www.51cto.com/article/747956.html
5.ChatGPT正在榨干算力,如何打赢这场算力攻坚战?互联网在这之中表现最为亮眼的,莫过于从GPT-3迭代而来的ChatGPT,2022年底一出世就博得全球目光,无论是在模型预训练阶段,还是模型被访问阶段,ChatGPT都对算力提出“史无前例”的要求。 在模型预训练阶段,从GPT-1到GPT-3,从GPT-3 Small到GPT-3 175B,对算力的需求呈指数型增长。 https://news.iresearch.cn/yx/2023/03/463121.shtml
6.关于ChatGPT的五个最重要问题iPhone的交互方式和各种传感器,让iPhone慢慢变成了人类的身体的一部分,一个带来更多信息,高效交互的器官。ChatGPT已经接近目前人类调用算力和数据的最终极形态了,其应用方式本身当然是足够厉害的。我们在第二问,ChatGPT会取代哪些工作里,详细展开。 这里也牵涉到了一个重要的题外话,我们在讨论中发现,很多资深AI从业者,http://www.360doc.com/content/23/0317/18/1072439854_1072439854.shtml
7.令小雄王鼎民袁健:ChatGPT爆火后关于科技伦理及学术伦理的冷ChatGPT 能讲“人话”是基于 OpenAI 公司开发的一个 GPT-3.5 架构的大型语言模型,通过强化学习训练人工智能聊天机器人程序,能够广泛应用于业界和客户服务,基于 Transformer 架构的强大算力的语言模型,具有深度学习特质,葆有出色的语言理解和文本对话生成能力,ChatGPT 的语言理解和生成水平的便捷性能够更快更好地回答http://fzzfyjy.cupl.edu.cn/info/1035/15631.htm
8.中金:ChatGPT启新章,AIGC引领云硬件新时代一般服务器/存储器对于PCB的需求普通的多层板为主,随着ChatGPT大模型这类需要海量数据应用的发展,对算力的要求越来越高,对于大容量、高速、高性能的云计算服务器的需求将不断增长,对PCB的设计要求也将不断升级,提升对于高层数、大尺寸、高速材料等的应用。https://wallstreetcn.com/articles/3682574
9.一文读懂ChatGPT,你想知道的都在这里目前,百度宣布进军AIGC赛道,依托数据、算法和算力,全力打造AIGC产品“文心一言”,有利于为我国舆论安全保驾护航。 ? 完善监管机制,加强AI层面立法 首先,事前建立市场准入标准,由网信办牵头,成立人工智能风险评估委员会,综合评估ChatGPT进入市场后可能引发的风险,要求人工智能公司严格遵守各项运营要求。其次,事中应当https://weibo.com/ttarticle/p/show?id=2309404906876851847170
10.实测:ChatGPT的翻译能力怎么样?雷峰网另外,研究人员在Tp2中增加了一个额外命令,要求ChatGPT不要在翻译的句子上加双引号(在原始格式中经常发生)。尽管如此,ChatGPT依旧不稳定,如会将同一批次的多行句子翻译成单行。 图2:候选翻译提示 研究人员将三种不同的候选prompt与Flores-101的测试集在汉译英任务中的表现进行比较,图3显示了ChatGPT和其他三个翻译https://m.leiphone.com/category/ai/GftWDAq4bFtBelft.html
11.ChatGPT第二、遏制用户滥用政策。不允许文本要求生成暴力、成人或政治内容等视频。如果我们的过滤器发现可能违反我们政策的文本提示和图片上传,ChatGPT就会采用自动化和人工监控系统予以拒绝。 OpenAI认为:负责任的开发和安全监管是人工智能的重要组成部分,让用户对ChatGPT安全系统有信心。 https://www.jianshu.com/p/805abc3dcaae