Mixtral 8X7B MoE模型基于阿里云人工智能平台PAI实践合集

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 本文介绍如何在PAI平台针对Mixtral 8x7B大模型的微调和推理服务的最佳实践,助力AI开发者快速开箱。以下我们将分别展示具体使用步骤。

1.背景


Mixtral 8x7B大模型是Mixtral AI推出的基于decoder-only架构的稀疏专家混合网络(Mixture-Of-Experts,MOE)开源大语言模型。这一模型具有46.7B的总参数量,对于每个token,路由器网络选择八组专家网络中的两组进行处理,并且将其输出累加组合,在增加模型参数总量的同时,优化了模型推理的成本。在大多数基准测试中,Mixtral 8x7B模型与Llama2 70B和GPT-3.5表现相当,因此具有很高的使用性价比。

阿里云人工智能平台PAI是面向开发者和企业的机器学习/深度学习平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务。

本文介绍如何在PAI平台针对Mixtral 8x7B大模型的微调和推理服务的最佳实践,助力AI开发者快速开箱。以下我们将分别展示具体使用步骤。


2.使用PAI-DSW轻量化微调Mixtral 8x7B MOE大模型


PAI-DSW是云端机器学习开发IDE,为用户提供交互式编程环境,同时提供了丰富的计算资源。我们在智码实验室(https://gallery.pai-ml.com/)Notebook Gallery中上线了两个微调Mixtral 8x7B MOE大模型的示例,参见下图:

image.png

上述Notebook可以使用阿里云PAI-DSW的实例打开,并且需要选择对应的计算资源和镜像。


3.使用Swift轻量化微调Mixtral 8x7B MOE大模型


Swift是魔搭ModelScope开源社区推出的轻量级训练推理工具开源库,使用Swift进行这一大模型LoRA轻量化微调需要使用2张GU108(80G)及以上资源。在安装完对应依赖后,我们首先下载模型至本地:

!apt-getupdate!echoy|apt-getinstallaria2defaria2(url, filename, d):
!aria2c--console-log-level=error-c-x16-s16 {url} -o {filename} -d {d}
mixtral_url="http://pai-vision-data-inner-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/mixtral/Mixtral-8x7B-Instruct-v0.1.tar"aria2(mixtral_url, mixtral_url.split("/")[-1], "/root/")
!cd/root&&mkdir-pAI-ModelScope!cd/root&&tar-xfMixtral-8x7B-Instruct-v0.1.tar-C/root/AI-ModelScopeimportosos.environ['MODELSCOPE_CACHE']='/root'

当模型下载完毕后,我们使用Swift一键拉起训练任务:

!cdswift/examples/pytorch/llm&&PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
pythonllm_sft.py \
--model_id_or_pathAI-ModelScope/Mixtral-8x7B-Instruct-v0.1 \
--model_revisionmaster \
--sft_typelora \
--tuner_backendswift \
--dtypeAUTO \
--output_dir/root/output \
--ddp_backendnccl \
--datasetalpaca-zh \
--train_dataset_sample100 \
--num_train_epochs2 \
--max_length2048 \
--check_dataset_strategywarning \
--lora_rank8 \
--lora_alpha32 \
--lora_dropout_p0.05 \
--lora_target_modulesALL \
--batch_size1 \
--weight_decay0.01 \
--learning_rate1e-4 \
--gradient_accumulation_steps16 \
--max_grad_norm0.5 \
--warmup_ratio0.03 \
--eval_steps300 \
--save_steps300 \
--save_total_limit2 \
--logging_steps10 \
--only_save_modeltrue \
--gradient_checkpointingfalse

模型训练完成后,我们将学习到的LoRA权重合并到模型Checkpoint中:

!swiftmerge-lora--ckpt_dir'/root/output/mistral-7b-moe-instruct/v3-20231215-111107/checkpoint-12'

其中,ckpt_dir参数的值需要替换成模型LoRA权重保存路径。为了测试模型训练的正确性,我们可以使用transformers库进行离线推理测试:

fromtransformersimportAutoModelForCausalLM, AutoTokenizermodel_id="/root/output/mistral-7b-moe-instruct/v3-20231215-111107/checkpoint-12-merged"tokenizer=AutoTokenizer.from_pretrained(model_id, device_map='auto')
model=AutoModelForCausalLM.from_pretrained(model_id, device_map='auto')
text="""[INST] <<SYS>>You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.<</SYS>>写一首歌的过程从开始到结束。 [/INST]"""inputs=tokenizer(text, return_tensors="pt")
outputs=model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))


4.使用Deepspeed轻量化微调Mixtral 8x7B MOE大模型


我们也可以使用Deepspeed对Mixtral 8x7B MOE大模型进行LoRA轻量化微调。同样的,我们需要使用2张GU108(80G)及以上资源。我们首先下载模型至本地:

!apt-getupdate!echoy|apt-getinstallaria2defaria2(url, filename, d):
!aria2c--console-log-level=error-c-x16-s16 {url} -o {filename} -d {d}
mixtral_url="http://pai-vision-data-inner-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/mixtral/Mixtral-8x7B-Instruct-v0.1.tar"aria2(mixtral_url, mixtral_url.split("/")[-1], "/root/")
!cd/root&&tar-xfMixtral-8x7B-Instruct-v0.1.tar

第二步,我们下载一个示例古诗生成数据集,用户可以根据下述数据格式准备自己的数据集。

!wget-chttps://pai-quickstart-predeploy-hangzhou.oss-cn-hangzhou.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_train_mixtral.json!wget-chttps://pai-quickstart-predeploy-hangzhou.oss-cn-hangzhou.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_test_mixtral.json

第三步,我们可以修改示例命令的超参数,并且拉起训练任务。

!mkdir-p/root/output!deepspeed/ml/code/train_sft.py \
--model_name_or_path/root/Mixtral-8x7B-Instruct-v0.1/ \
--train_pathen_poetry_train_mixtral.json \
--valid_pathen_poetry_test_mixtral.json \
--learning_rate1e-5 \
--lora_dim32 \
--max_seq_len256 \
--modelmixtral \
--num_train_epochs1 \
--per_device_train_batch_size8 \
--zero_stage3 \
--gradient_checkpointing \
--print_loss \
--deepspeed \
--output_dir/root/output/ \
--offload

当训练结束后,我们拷贝额外配置文件至输出文件夹:

!cp/root/Mixtral-8x7B-Instruct-v0.1/generation_config.json/root/output!cp/root/Mixtral-8x7B-Instruct-v0.1/special_tokens_map.json/root/output!cp/root/Mixtral-8x7B-Instruct-v0.1/tokenizer.json/root/output!cp/root/Mixtral-8x7B-Instruct-v0.1/tokenizer.model/root/output!cp/root/Mixtral-8x7B-Instruct-v0.1/tokenizer_config.json/root/output

我们同样可以使用transformers库进行离线推理测试:

importosfromtransformersimportAutoModelForCausalLM, AutoTokenizerimporttorchmodel_id="/root/output/"tokenizer=AutoTokenizer.from_pretrained(model_id)
model=AutoModelForCausalLM.from_pretrained(model_id,device_map='auto',torch_dtype=torch.float16)
text="""[INST] Write a poem on a topic 'Care for Thy Soul as Thing of Greatest Price': [/INST]"""inputs=tokenizer(text, return_tensors="pt").to('cuda')
outputs=model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

如果用户需要将上述模型部署为EAS服务,需要将格式转换成safetensors格式:

state_dict=model.state_dict()
model.save_pretrained(
model_id,
state_dict=state_dict,
safe_serialization=True)


5.使用PAI-EAS在线部署Mixtral 8x7B MOE大模型


PAI-EAS是PAI平台推出的弹性推理服务,可以将各种大模型部署为在线服务。当Mixtral 8x7B MOE大模型微调完毕后,我们可以将其部署为PAI-EAS服务。这里,我们介绍使用PAI-SDK将上述模型进行部署。首先,我们在PAI-DSW环境安装PAI-SDK:

!python-mpipinstallalipai--upgrade

在安装完成后,在在命令行终端上执行以下命令,按照引导完成配置AccessKey、PAI工作空间以及 OSS Bucket:

python-mpai.toolkit.config

我们将训练好的模型上传至OSS Bucket。在下述命令中,source_path为模型Checkpoint保存的本地路径,oss_path为上传至OSS的目标路径:

importpaifrompai.sessionimportget_default_sessionfrompai.common.oss_utilsimportuploadprint(pai.__version__)
sess=get_default_session()
# 上传模型到默认的Bucketmodel_uri=upload(
source_path="/root/output", 
oss_path="mixtral-7b-moe-instruct-sft-ds")
print(model_uri)

PAI 提供了Mixtral 8X7B MOE 模型部署镜像和部署代码,用户可以通过相应的部署配置,将微调后的模型部署到PAI-EAS。

frompai.modelimportRegisteredModelfrompai.predictorimportPredictor# 获取PAI提供的Mixtral模型服务配置(目前仅支持乌兰察布)inference_spec=RegisteredModel(
"Mixtral-8x7B-Instruct-v0.1",
model_provider="pai",
).inference_spec# 修改部署配置,使用微调后的模型infer_spec.mount(model_uri, model_path="/ml/model")
# 部署推理服务服务m=Model(inference_spec=infer_spec)
predictor: Predictor=m.deploy(
service_name='mixtral_sdk_example_ds',
options={
"metadata.quota_id": "<ResourceGroupQuotaId>",
"metadata.quota_type": "Lingjun",
"metadata.workspace_id": session.workspace_id    }
)
# 查看服务的Endpoint和Tokenendpoint=predictor.internet_endpointtoken=predictor.access_token

以上配置项中,metadata.quota_id是用户购买的灵骏资源配额ID,在购买了灵骏资源之后,用户可以从PAI控制台页面的资源配额入口获取相应的信息。

部署的推理服务支持 OpenAI 的 API 风格进行调用,通过推理服务的详情页,用户可以获得服务访问地址(Endpoint)和访问凭证(Token)。使用 cURL 调用推理服务的示例如下:

# 请注意替换为使用服务的Endpoint和TokenexportAPI_ENDPOINT="<ENDPOINT>"exportAPI_TOKEN="<TOKEN>"# 查看模型listcurl$API_ENDPOINT/v1/models \
-H"Content-Type: application/json" \
-H"Authorization: Bearer $API_TOKEN"# 调用通用的文本生成APIcurl$API_ENDPOINT/v1/completions \
-H"Content-Type: application/json" \
-H"Authorization: Bearer $API_TOKEN" \
-d'{"model": "Mixtral-8x7B-Instruct-v0.1",
"prompt": "San Francisco is a",
"max_tokens": 256,
"temperature": 0}'curl$API_ENDPOINT/v1/chat/completions \
-H"Authorization: Bearer $API_TOKEN" \
-H"Content-Type: application/json" \
-d'{"model": "Mixtral-8x7B-Instruct-v0.1",
"messages": [
          {"role": "user", "content": "介绍一下上海的历史"}
        ]
}'


6.使用PAI-QuickStart微调和部署Mixtral 8x7B MOE大模型


快速开始(PAI-QuickStart)集成了国内外AI开源社区中优质的预训练模型,支持零代码或是SDK的方式实现微调和部署Mixtral 8x7B MOE大模型,用户只需要格式准备训练集和验证集,填写训练时候使用的超参数就可以一键拉起训练任务。Mixtral的模型卡片如下图所示:

image.png

我们可以根据实际需求上传训练集和验证集,调整超参数,例如learning_rate、sequence_length、train_iters等,如下所示:

image.png

点击“训练”按钮,PAI-QuickStart开始进行训练,用户可以查看训练任务状态和训练日志,如下所示:

image.png

如果需要将模型部署至PAI-EAS,可以在同一页面的模型部署卡面选择资源组,并且点击“部署”按钮实现一键部署。模型调用方式和上文PAI-EAS调用方式相同。

image.png


7.相关资料


阿里云人工智能平台PAI

交互式建模PAI-DSW

模型在线服务PAI-EAS

PAI 快速开始

PAI Python SDK

阿里云PAI灵骏智算服务

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
5天前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型的策略与实践
【4月更文挑战第30天】 在数据驱动的时代,机器学习(ML)作为一项核心技术,其应用范围和影响力日益扩大。然而,构建一个既高效又准确的机器学习模型并非易事。本文将探讨一系列实用的策略和技术,用于优化机器学习的工作流程,包括数据预处理、特征工程、模型选择、超参数调优以及模型评估等方面。通过这些策略,读者可以提升模型的性能,确保在实际应用中达到预期的准确度和效率。
|
5天前
|
机器学习/深度学习 算法 数据挖掘
利用机器学习优化数据中心能效的策略与实践
【5月更文挑战第13天】 在数据中心管理和运营的众多挑战中,能源效率优化是降低运营成本和减少环境影响的关键因素。本文旨在探讨如何应用机器学习技术来提高数据中心的能效,通过智能化的数据分析和资源管理达到节能的目的。与传统的摘要不同,本文将直接深入探讨所采用的技术手段、实施步骤以及预期效果,为读者提供一种新颖的视角。
12 4
|
3天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的策略与实践
【5月更文挑战第17天】 在当今数据驱动的时代,机器学习(ML)模型的效能成为衡量技术创新和解决实际问题能力的重要指标。本文旨在探讨构建高效机器学习模型的先进策略,并通过具体实践案例来揭示这些方法的有效性。我们将从数据处理、特征工程、模型选择、调参技巧以及模型部署等方面详细论述,旨在为读者提供一个全面而深入的视角,帮助其优化现有模型或开发新模型,以应对复杂多变的业务挑战。
11 2
|
4天前
|
机器学习/深度学习 运维 算法
利用机器学习进行异常检测的技术实践
【5月更文挑战第16天】本文探讨了利用机器学习进行异常检测的技术实践,强调了在大数据时代异常检测的重要性。机器学习通过无监督、有监督和半监督学习方法自动识别异常,常见算法包括KNN、LOF、K-means和GMM等。异常检测流程包括数据准备、特征工程、选择算法、训练模型、评估优化及部署。机器学习为异常检测提供了灵活性和准确性,但需结合具体问题选择合适方法。
|
5天前
|
机器学习/深度学习 自然语言处理 监控
利用机器学习进行情感分析:技术详解与实践
【5月更文挑战第13天】本文探讨了利用机器学习进行情感分析的方法,包括技术原理、常用算法和实践应用。情感分析涉及文本预处理(如清洗、分词和去除停用词)、特征提取(如词袋模型、TF-IDF和Word2Vec)及分类器训练(如朴素贝叶斯、SVM和RNN/LSTM)。常见情感分析算法有朴素贝叶斯、支持向量机和深度学习模型。实践中,情感分析应用于社交媒体监控、产品评论分析等领域。通过本文,读者可了解情感分析的基础知识及其应用价值。
|
5天前
|
安全 Devops 测试技术
深入了解阿里云云效DevOps:构建高效软件开发实践
阿里云云效DevOps,集成CI/CD与自动化测试,提升开发效率。支持持续集成确保代码质量,自动化测试加速交付,多环境及灰度发布保障安全可靠性。助团队构建高效开发实践,增强竞争力。
20 1
|
5天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI
人工智能平台PAI
16 0
|
5天前
|
机器学习/深度学习 算法 异构计算
构建高效机器学习模型的策略与实践
【5月更文挑战第8天】 随着数据科学领域的不断进步,机器学习(ML)已成为解决复杂问题的重要工具。然而,构建一个既高效又准确的ML模型并非易事。本文将详细探讨在设计和训练机器学习模型时可以采用的一系列策略,以优化其性能和效率。我们将讨论特征工程的重要性、选择合适的算法、调整参数以及评估模型的有效性。通过这些策略,读者将能够更好地理解如何提升模型的预测能力并避免常见的陷阱。
|
5天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
5天前
|
机器学习/深度学习 人工智能 算法
【Python 机器学习专栏】强化学习在游戏 AI 中的实践
【4月更文挑战第30天】强化学习在游戏AI中展现巨大潜力,通过与环境交互和奖励信号学习最优策略。适应性强,能自主探索,挖掘出惊人策略。应用包括策略、动作和竞速游戏,如AlphaGo。Python是实现强化学习的常用工具。尽管面临训练时间长和环境复杂性等挑战,但未来强化学习将与其他技术融合,推动游戏AI发展,创造更智能的游戏体验。

热门文章

最新文章

相关产品

  • 人工智能平台 PAI
  • http://www.vxiaotou.com