分享好友 资讯首页 频道列表

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

2024-01-12 15:2870990

作者:熊兮、贺弘、临在

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开发者快速开箱。以下我们将分别展示具体使用步骤。

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

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

 

 

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

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

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

 

!apt-get update

!echo y | apt-get install aria2

 

def aria2(url, filename, d):

   !aria2c --console-log-level=error -c -x 16 -s 16 {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_urlmixtral_url.split('/')[-1], '/root/')

!cd /root && mkdir -p AI-ModelScope

!cd /root && tar -xf Mixtral-8x7B-Instruct-v0.1.tar -C /root/AI-ModelScope

 

import os

os.environ['MODELSCOPE_CACHE']='/root'

 

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

 

!cd swift/examples/pytorch/llm && PYTHonPATH=../../..

CUDA_VISIBLE_DEVICES=0,1

python llm_sft.py

   --model_id_or_path AI-ModelScope/Mixtral-8x7B-Instruct-v0.1

   --model_revision master

   --sft_type lora

   --tuner_backend swift

   --dtype AUTO

   --output_dir /root/output

   --ddp_backend nccl

   --dataset alpaca-zh

   --train_dataset_sample 100

   --num_train_epochs 2

   --max_length 2048

   --check_dataset_strategy warning

   --lora_rank 8

   --lora_alpha 32

   --lora_dropout_p 0.05

   --lora_target_modules ALL

   --batch_size 1

   --weight_decay 0.01

   --learning_rate 1e-4

   --gradient_accumulation_steps 16

   --max_grad_norm 0.5

   --warmup_ratio 0.03

             --eval_steps 300

   --save_steps 300

   --save_total_limit 2

   --logging_steps 10

   --only_save_model true

   --gradient_checkpointing false

 

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

 

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

 

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

 

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

 

from transformers import AutoModelForCausalLMAutoTokenizer

 

model_id = '/root/output/mistral-7b-moe-instruct/v3-20231215-111107/checkpoint-12-merged'

tokenizer = AutoTokenizer.from_pretrained(model_iddevice_map='auto')

 

model = AutoModelForCausalLM.from_pretrained(model_iddevice_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))

 

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

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

 

!apt-get update

!echo y | apt-get install aria2

 

def aria2(url, filename, d):

   !aria2c --console-log-level=error -c -x 16 -s 16 {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_urlmixtral_url.split('/')[-1], '/root/')

!cd /root && tar -xf Mixtral-8x7B-Instruct-v0.1.tar

 

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

 

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

!wget -c https://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_path en_poetry_train_mixtral.json

--valid_path en_poetry_test_mixtral.json

--learning_rate 1e-5

--lora_dim 32

--max_seq_len 256

--model mixtral

--num_train_epochs 1

--per_device_train_batch_size 8

--zero_stage 3

--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库进行离线推理测试:

 

import os

from transformers import AutoModelForCausalLMAutoTokenizer

import torch

 

model_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)

 

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

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

 

!python -m pip install alipai --upgrade


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

 

python -m pai.toolkit.config


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

 

import pai

from pai.session import get_default_session

from pai.common.oss_utils import upload

 

print(pai.__version__)

sess = get_default_session()

 

# 上传模型到默认的Bucket

model_uri = upload(

   source_path='/root/output',

   oss_path='mixtral-7b-moe-instruct-sft-ds'

)

 

print(model_uri)

 

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

 

from pai.model import RegisteredModel

from pai.predictor import Predictor

 

# 获取PAI提供的Mixtral模型服务配置(目前仅支持乌兰察布)

inference_spec = RegisteredModel(

   'Mixtral-8x7B-Instruct-v0.1',

   model_provider='pai',

).inference_spec

 

# 修改部署配置,使用微调后的模型

infer_spec.mount(model_urimodel_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和Token

endpoint = predictor.internet_endpoint

token = predictor.access_token

 

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

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

 

# 请注意替换为使用服务的Endpoint和Token

export API_ENDPOINT='<ENDPOINT>'

export API_TOKEN='<TOKEN>'

 

# 查看模型list

curl $API_ENDPOINT/v1/models

             -H 'Content-Type: application/json'

             -H 'Authorization: Bearer $API_TOKEN'

 

# 调用通用的文本生成API

curl $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': '介绍一下上海的历史'}

       ]

     }'

 

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

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

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

 

 

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

 

 

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

 

 

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

 

 

相关资料

阿里云人工智能平台PAI:

https://www.aliyun.com/product/bigdata/learn

交互式建模PAI-DSW:

https://www.aliyun.com/activity/bigdata/pai/dsw

模型在线服务PAI-EAS:

https://www.aliyun.com/product/bigdata/learn/eas

PAI 快速开始:

https://help.aliyun.com/zh/pai/user-guide/quick-start-overview

PAI Python SDK:

https://github.com/aliyun/pai-python-sdk

阿里云PAI灵骏智算服务:

https://www.aliyun.com/product/bigdata/learn/pailingjun

 

举报 0
收藏 0
打赏 0
评论 0
钛虎科技机器人震撼发布:T170A“瑶光”“墨翟”引领具身智能新时代
2024年7月4日 —— 在全球瞩目的2024世界人工智能大会(WAIC)暨人工智能全球治理高级别会议盛大开幕之际,钛虎机器人科技有限公司在展会上隆重发布了最新研发成果——全新二代人形机器人T170A实体“瑶光”与“墨翟”。

0评论2024-07-055104

滴滴安全、杯杯直饮!海尔净水首创十级精滤
 7月1日,海尔鲜活水Pro+净水机新品发布,海尔净水首创行业十级精滤系统,实现从进水到滤芯到出水全水路精滤,过滤精度和洁净力再升级,定义行业净水新高度。同时,它还搭载海尔原创的鲜活水科技,首杯水即可直饮,24小时全时段保鲜,为用户升级“十级纯净,滴滴鲜活”的净水新体验。

0评论2024-07-045068

为中国高端用户量身定制!BWT富锶矿泉机新品上市
7月中旬,德国百年净水品牌BWT倍世将推出的全新产品——BWT富锶矿泉净饮机,不仅搭载S+矿泉水科技和四级净滤技术,每一滴水都富含锶矿物质,用户在家即可直饮矿泉水,还凭借纯净双出水设计满足全家饮水、洗菜、做饭等多重需求,更是通过IOT智慧物联系统带来智能化、可视化的净水交互体验,进一步升级高端家庭净水体验,推动净水行业迈入矿物净饮新时代。

0评论2024-07-045132

行业首个!海尔智家牵头家电家居一体化标准制定
近年来,随着居住水平的提高和家电设备的发展,消费者对居住环境的需求也在朝向智能化、整体化、定制化的方向发展,通过家电家居

0评论2024-07-045072

获评优秀!海尔智家成省内家电业唯一示范
在新一轮科技革命和产业变革推动下,颠覆性科技创新成果不断涌现,成为推动产业升级、经济发展的重要力量。而在家电行业均发力科

0评论2024-07-045071

央视走进海尔:生产电视,也生产影院级享受
在现代生活中,电视不止是呈现光影艺术的载体,也是提升生活品质的良伴。电视的画面清晰度、系统流畅度等都会直接影响观影体验。因此,用户也对电视提出了更高的要求,在选购产品时,不再局限于外观、价格等因素,转而更关注电视在视觉、听觉、操作、互联等方面的整体体验。

0评论2024-07-045294

央视走进海尔:生产厨电,也生产烹饪生活
中国作为美食大国,讲究民以食为天。工欲善其事,必先利其器,要想做一桌色香味俱全的饭菜,首先要选一套品质高、体验佳的厨房用具。小到炒锅、勺子,大到燃气灶、油烟机,都会影响厨房烹饪体验。

0评论2024-07-045074

台风要稳吹风要柔!00后模特刘怡菲:舒适用风选Leader
7月2日,“100个人,100种Leader”第五期用户故事《美丽生活,点亮美丽人生》正式上线。故事讲述了00后用户刘怡菲的工作与生活状态,工作时,她是台风稳健的超模新星,展现自己的专业实力;休息时,她是喜欢享受生活的年轻女孩,在Leader空调的柔风陪伴下追求自己的舒适生活。

0评论2024-07-045082

本周六 深圳南山 我和智能制造有个约会!附数百家参会企业名单
数智低碳出海驱动新质生产力架构如下:1、主办:深圳市智能化学会2、协办:中山大学深圳研究院、深圳市志奋领科技有限公司、深圳

0评论2024-07-035095

全球连冠后再引领!海尔全屋用水发布4大增长新引擎
为承接市场活力、赋能客户能力建设、持续夯实引领者的地位,7月3日上午,以“To C新引擎 懂水更懂家”为主题的海尔水联网2024年夏季客户峰会在长春召开。会上,海尔智家水联网市场总经理郑伟特别介绍了海尔全屋用水发展面临的机遇和挑战,并发布了本年度四大增长引擎,从产品、营销、模式、平台四个方面为客户赋能。

0评论2024-07-035086