快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践(二)——全参数微调训练
本实践将采用阿里云机器学习平台PAI-DSW模块针对 Llama-2-7B-Chat 进行全参数微调。PAI-DSW是交互式建模平台,该实践适合需要定制化微调模型,并追求模型调优效果的开发者。
前言
近期,Meta 宣布大语言模型 Llama2 开源,包含7B、13B、70B不同尺寸,分别对应70亿、130亿、700亿参数量,并在每个规格下都有专门适配对话场景的优化模型Llama-2-Chat。Llama2 可免费用于研究场景和商业用途(但月活超过7亿以上的企业需要申请),对企业和开发者来说,提供了大模型研究的最新利器。
目前,Llama-2-Chat在大多数评测指标上超过了其他开源对话模型,并和一些热门闭源模型(ChatGPT、PaLM)相差不大。阿里云机器学习平台PAI第一时间针对 Llama2 系列模型进行适配,推出全量微调、Lora微调、推理服务等场景最佳实践,助力AI开发者快速开箱。以下我们将分别展示具体使用步骤。
【往期最佳实践】: 快速玩转 Llama2!PAI 推出最佳实践(一)——低代码 Lora 微调及部署
最佳实践二:Llama2 全参数微调训练
一、运行环境要求
Python环境3.9以上,GPU推荐使用A100(80GB),该资源比较紧俏,建议多刷新几次。
二、准备工作
1、登入PAI并下载 Llama-2-7B-Chat
a. 登入PAI控制台 https://pai.console.aliyun.com/
b. 进入 PAI-DSW 创建实例后下载模型文件。运行如下代码,可以自动为您选择合适的下载地址,并将模型下载到当前目录。
import os dsw_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 gr import requests import json from 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-8 import oss2 import 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 的微调及部署工作,敬请期待。
【往期最佳实践】: 快速玩转 Llama2!PAI 推出最佳实践(一)——低代码 Lora 微调及部署
参考资料:
- Llama2: Inside the Model https://ai.meta.com/llama/#inside-the-model
- Llama 2 Community License Agreement https://ai.meta.com/resources/models-and-libraries/llama-downloads/
- HuggingFace Open LLM Leaderboard https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
- 阿里云机器学习平台PAI:https://www.aliyun.com/product/bigdata/learn
特别提示您 Llama2 属于国外公司开发的限制性开源模型,请您务必在使用前仔细阅读并遵守 Llama2 的许可协议,尤其是其限制性许可条款(如月活超过7亿以上的企业需申请额外许可)和免责条款等。
此外提醒您务必遵守适用国家的法律法规,若您利用 Llama2 向中国境内公众提供服务,请遵守国家的各项法律法规要求,尤其不得从事或生成危害国家、社会、他人权益等行为和内容。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
并发编程-FutureTask解析 | 京东物流技术团队
1、FutureTask对象介绍 Future对象大家都不陌生,是JDK1.5提供的接口,是用来以阻塞的方式获取线程异步执行完的结果。 在Java中想要通过线程执行一个任务,离不开Runnable与Callable这两个接口。 Runnable与Callable的区别在于,Runnable接口只有一个run方法,该方法用来执行逻辑,但是并没有返回值;而Callable的call方法,同样用来执行业务逻辑,但是是有一个返回值的。 Callable执行任务过程中可以通过FutureTask获得任务的执行状态,并且可以在执行完成后通过Future.get()方式获取执行结果。 Future是一个接口,而FutureTask就是Future的实现类。并且FutureTask实现了 RunnableFuture(Runnable + Future),说明我们可以创建一个FutureTask并直接把它放到线程池执行,然后获取FutureTask的执行结果。 2、FutureTask源码解析 2.1 主要方法和属性 那么FutureTask是如何通过阻塞的方式来获取到异步线程执行的结果的呢?我们看下...
- 下一篇
字节跳动 EB 级 Iceberg 数据湖的机器学习应用与优化
深度学习的模型规模越来越庞大,其训练数据量级也成倍增长,这对海量训练数据的存储方案也提出了更高的要求:怎样更高性能地读取训练样本、不使数据读取成为模型训练的瓶颈,怎样更高效地支持特征工程、更便捷地增删和回填特征。本文将介绍字节跳动如何通过 Iceberg 数据湖支持 EB 级机器学习样本存储,实现高性能特征读取和高效特征调研、特征工程加速模型迭代。 机器学习样本存储:背景与趋势 在字节跳动,机器学习模型的应用范围非常广泛。为了支持模型的训练,我们建立了两大训练平台:推荐广告训练平台和通用的 CV/NLP 训练平台。推荐广告平台每周训练规模达到上万个模型,而 CV/NLP 平台的训练规模更是每周高达 20 万个模型。如此庞大的模型训练规模背后离不开海量的训练样本支持。目前,在字节跳动的离线训练样本存储中,数据总量已经达到了 EB 级,每日还在以 PB 级的速度增长。这些数据被用于支持广告、搜索、推荐等模型的训练,覆盖了多个业务领域;这些数据还支持算法团队的特征调研、特征工程,并为模型的迭代和优化提供基础。目前字节跳动以及整个业界在机器学习和训练样本领域的一些趋势如下: 首先, 模型 ...
相关文章
文章评论
共有0条评论来说两句吧...