快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践
阿里妹导读
前言
最佳实践一:Llama 2 低代码 Lora 微调及部署
本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。
一、准备工作
1、进入PAI-快速开始页面
a. 登入PAI控制台 https://pai.console.aliyun.com/
2、选择Llama2模型
Tips:
一般来说,参数量越大的模型效果会更好,但相对应的模型运行时产生的费用和微调训练所需要的数据量都会更多。 Llama-2-13B和70B的版本,以及其他开源大语言模型也将后续在PAI-快速开始上线,敬请期待。
二、模型在线推理
1、部署模型
Tips:
后续您可以随时在PAI-快速开始中点击“管理任务与部署”按钮来回到当前的推理服务。
2、调用推理服务
三、模型微调训练
Tips:
大语言模型也可以在对话过程中直接学习到比较简单的知识,请根据自己的需求选择是否训练。 当前快速开始支持的训练方式基于LoRA。LoRA训练相较于其他训练方式(如SFT等)会显著降低训练成本和时间,但大语言模型的LoRA训练效果可能不稳定。
1、准备数据
Tips:
为方便您试用体验Llama 2模型,我们在 llama-2-7b-chat-hf的模型卡片中也已经帮您准备了一份默认用于Instruction Tuning的数据集来直接进行微调训练。
[{"instruction": "以下文本是否属于世界主题?为什么美国人很少举行阅兵?","output": "是","id": 0},{"instruction": "以下文本是否属于世界主题?重磅!事业单位车改时间表已出!","output": "不是","id": 1}]
训练数据的具体格式也可以在PAI-快速开始的具体模型介绍页中查阅。
2、提交训练作业
Tips:
使用默认数据集和默认超参数、计算资源训练大概预计的完成时间在1小时30分钟左右。如果使用自定义训练数据和配置项,预计的训练完成时间可能有所差异,但通常应该在数小时后完成。 如果中途关闭了页面,您可以随时在PAI-快速开始中点击“管理任务与部署”按钮来回到当前的训练任务。
3、部署微调模型
最佳实践二:Llama2 全参数微调训练
本实践将采用阿里云机器学习平台PAI-DSW模块针对 Llama-2-7B-Chat 进行全参数微调。PAI-DSW是交互式建模平台,该实践适合需要定制化微调模型,并追求模型调优效果的开发者。
一、运行环境要求
二、准备工作
1、登入PAI并下载 Llama-2-7B-Chat
import osdsw_region = os.environ.get("dsw_region")url_link = {"cn-shanghai": "https://atp-modelzoo-sh.oss-cn-shanghai-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz","cn-hangzhou": "https://atp-modelzoo.oss-cn-hangzhou-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz","cn-shenzhen": "https://atp-modelzoo-sz.oss-cn-shenzhen-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz","cn-beijing": "https://atp-modelzoo-bj.oss-cn-beijing-internal.aliyuncs.com/release/tutorials/llama2/llama2-7b.tar.gz",}path = url_link[dsw_region]os.environ['LINK_CHAT'] = path!wget $LINK_CHAT!tar -zxvf llama2-7b.tar.gz
如果您的地区不在上述地区中,您可以自行选择与你地域最近的链接进行下载(不同地域不共享内网,记得将链接中的-internal去掉)。同一地域的数据下载速度快,不同地域之间也可以下载,但是速度比同一地域略慢。
2、下载和安装环境
ColossalAI是大规模并行AI训练系统,在本例中我们使用该框架进行模型微调。
transformers是基于transformers模型结构的预训练语言库。
gradio是一个快速构建机器学习Web展示页面的开源库。
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/ColossalAI.tar.gz! tar -zxvf ColossalAI.tar.gz! pip install ColossalAI/.! pip install ColossalAI/applications/Chat/.! pip install transformers==4.30.0! pip install gradio==3.11
3、下载示例训练数据
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_data.json! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_test.json
三、微调模型
! sh ColossalAI/applications/Chat/examples/train_sft.sh
四、试玩模型
import gradio as grimport requestsimport jsonfrom transformers import AutoTokenizer, AutoModelForCausalLM#模型地址替换为自己训练好的模型地址tokenizer = AutoTokenizer.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True)#模型地址替换为自己训练好的模型地址model = AutoModelForCausalLM.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True).eval().half().cuda()def inference(text):from transformers import pipelinepipe = pipeline("text-generation", model=model, tokenizer=tokenizer,device='cuda:0', max_new_tokens=400)res=pipe(text)return res[0]['generated_text'][len(text):]demo = gr.Blocks()with demo:input_prompt = gr.Textbox(label="请输入需求", value="请以软件工程师的身份,写一篇入职的发言稿。", lines=6)generated_txt = gr.Textbox(lines=6)b1 = gr.Button("发送")b1.click(inference, inputs=[input_prompt], outputs=generated_txt)demo.launch(enable_queue=True, share=True)
五、模型上传至OSS并在线部署
# encoding=utf-8import oss2import osAK='yourAccessKeyId'SK='yourAccessKeySecret'endpoint = 'yourEndpoint'dir='your model output dir'auth = oss2.Auth(AK, SK)bucket = oss2.Bucket(auth, endpoint, 'examplebucket')for filename in os.listdir(dir):current_file_path = dir+filenamefile_path = '需要上传地址'bucket.put_object_from_file(file_path, current_file_path)
接下来进行部署工作,步骤请参考【最佳实践三:Llama2 快速部署 WebUI】
最佳实践三:Llama2 快速部署 WebUI
本实践将采用阿里云机器学习平台PAI-EAS 模块针对 Llama-2-13B-chat 进行部署。PAI-EAS是模型在线服务平台,支持将模型一键部署为在线推理服务或AI-Web应用,具备弹性扩缩的特点,适合需求高性价比模型服务的开发者。
一、服务部署
1、进入PAI-EAS模型在线服务页面。
登录PAI控制台 https://pai.console.aliyun.com/
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入PAI EAS模型在线服务页面。
2、在PAI EAS模型在线服务页面,单击部署服务。
3、在部署服务页面,配置以下关键参数。
| |
4、单击部署,等待一段时间即可完成模型部署。
二、启动WebUI进行模型推理
1、单击目标服务的服务方式列下的查看Web应用。
2、在WebUI页面,进行模型推理验证。
What's More
本文主要展示了基于阿里云机器学习平台PAI快速进行Llama2微调及部署工作的实践,主要是面向7B和13B尺寸的。后续,我们将展示如何基于PAI进行70B尺寸的 Llama-2-70B 的微调及部署工作,敬请期待。
上述实验中,【最佳实践三:Llama2 快速部署 WebUI】支持免费试用机型运行,欢迎点击【阅读原文】前往阿里云使用中心领取“PAI-EAS”免费试用后前往PAI控制台体验。
参考资料:
1、Llama2: Inside the Model https://ai.meta.com/llama/#inside-the-model
2、Llama 2 Community License Agreement https://ai.meta.com/resources/models-and-libraries/llama-downloads/
3、HuggingFace Open LLM Leaderboard https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
4、阿里云机器学习平台PAI:https://www.aliyun.com/product/bigdata/learn
特别提示您 Llama2 属于国外公司开发的限制性开源模型,请您务必在使用前仔细阅读并遵守 Llama2 的许可协议,尤其是其限制性许可条款(如月活超过7亿以上的企业需申请额外许可)和免责条款等。