写点什么

快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践(二)——全参数微调训练

  • 2023-07-27
    浙江
  • 本文字数:2814 字

    阅读完需:约 9 分钟

前言

近期,Meta 宣布大语言模型 Llama2 开源,包含 7B、13B、70B 不同尺寸,分别对应 70 亿、130 亿、700 亿参数量,并在每个规格下都有专门适配对话场景的优化模型 Llama-2-Chat。Llama2 可免费用于研究场景和商业用途(但月活超过 7 亿以上的企业需要申请),对企业和开发者来说,提供了大模型研究的最新利器。


目前,Llama-2-Chat 在大多数评测指标上超过了其他开源对话模型,并和一些热门闭源模型(ChatGPT、PaLM)相差不大。阿里云机器学习平台 PAI 第一时间针对 Llama2 系列模型进行适配,推出全量微调、Lora 微调、推理服务等场景最佳实践,助力 AI 开发者快速开箱。以下我们将分别展示具体使用步骤。

最佳实践二:Llama2 全参数微调训练

  • 本实践将采用阿里云机器学习平台 PAI-DSW 模块针对 Llama-2-7B-Chat 进行全参数微调。PAI-DSW 是交互式建模平台,该实践适合需要定制化微调模型,并追求模型调优效果的开发者。

一、运行环境要求

Python 环境 3.9 以上,GPU 推荐使用 A100(80GB),该资源比较紧俏,建议多刷新几次。

二、准备工作

1、登入 PAI 并下载 Llama-2-7B-Chat

a. 登入 PAI 控制台 https://pai.console.aliyun.com/


b. 进入 PAI-DSW 创建实例后下载模型文件。运行如下代码,可以自动为您选择合适的下载地址,并将模型下载到当前目录。


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 去掉)。同一地域的数据下载速度快,不同地域之间也可以下载,但是速度比同一地域略慢。


如果您希望从 ModelScope 下载模型,请点击链接:https://modelscope.cn/models/modelscope/Llama-2-7b-chat-ms/summary

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
复制代码

四、试玩模型

模型训练完成后,下载我们提供的 webUI demo,试玩微调完成的模型(注意模型地址替换为自己训练好的模型地址)。


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 pipeline
pipe = 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 并在线部署

如果希望将上述模型部署至 PAI-EAS,您需要首先将训练完成的模型上传至 OSS。


下列参数需要根据您自己的信息填写


# encoding=utf-8import oss2import os
AK='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+filename file_path = '需要上传地址' bucket.put_object_from_file(file_path, current_file_path)
复制代码

What's More

本文主要展示了基于阿里云机器学习平台 PAI 快速进行 Llama2 微调及部署工作的实践,主要是面向 7B 和 13B 尺寸的。后续,我们将展示如何基于 PAI 进行 70B 尺寸的 Llama-2-70B 的微调及部署工作,敬请期待。


【领取机器学习 PAI 免费试用】


https://free.aliyun.com/?product=9602825&crowd=personal&spm=5176.28055625.J_5831864660.9.e939154aXSIwF8&scm=20140722.M_9553144.P_154.MO_1802-ID_9553144-MID_9553144-CID_20080-ST_7663-V_1

参考资料:

  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 亿以上的企业需申请额外许可)和免责条款等。


此外提醒您务必遵守适用国家的法律法规,若您利用 Llama2 向中国境内公众提供服务,请遵守国家的各项法律法规要求,尤其不得从事或生成危害国家、社会、他人权益等行为和内容。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2020-10-15 加入

分享阿里云计算平台的大数据和AI方向的技术创新和趋势、实战案例、经验总结。

评论

发布
暂无评论
快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践(二)——全参数微调训练_人工智能_阿里云大数据AI技术_InfoQ写作社区