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

2023-11-18

前言

近期,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 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)

接下来进行部署工作,步骤请参考【最佳实践三:Llama2 快速部署 WebUI】

What's More

  1. 本文主要展示了基于阿里云机器学习平台PAI快速进行Llama2微调及部署工作的实践,主要是面向7B和13B尺寸的。后续,我们将展示如何基于PAI进行70B尺寸的 Llama-2-70B 的微调及部署工作,敬请期待。
  2. 上述实验中,【最佳实践三: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
点击立即免费试用云产品 开启云上实践之旅!

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速玩转 Llama2!机器学习 PAI 最佳实践(二)—全参数微调训练 的相关文章

随机推荐

  • yolov3 数据预处理部分实现细节

    参考 https mp weixin qq com s T9LshbXoervdJDBuP564dQ https blog csdn net qm5132 article details 83651291 https mp weixin q
  • 软件工程复习10:软件设计与实现

    作者 非妃是公主 专栏 软件工程 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01 软件工程概述 软件工程复习02 个人技术 软件工程复习03 个人软件流程 软件工程复习04
  • Java经典面试题:Redis 和 Mysql 如何保证数据一致性

    Redis 和 Mysql 如何保证数据一致性 引言 重要性 挑战 Redis和MySQL概述 Redis Remote Dictionary Server MySQL 数据一致性概述 Redis的数据一致性机制 MySQL的数据一致性机制
  • vim常用操作——vim中执行shell

    vim常用操作 vim中执行shell vim中执行shell命令 有以下四种形式 单纯执行shell命令 不更改文件 形式 command 解释 不退出vim 并执行shell命令command 将命令输出显示在vim的命令区域 不会改变
  • 文件,文件夹操作(权限设置+操作)

    文件权限 r 可读权限 值为4 w 可写权限 值为2 x 可执行权限 值为1 文件权限说明 文件夹权限755 文件权限644 一个文件或文件夹的三种用户 第一位是拥有者 第二个是组内用户 第三个是组外用户 权限举例说明 文件夹权限为755
  • Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日

    1 目的 1 1 想 在Microsoft project2016中如何编辑一周七天工作日 2 操作 2 1 项目 gt 更改工作时间 gt 对于日历 标准 项目日历 gt 工作周 gt 详细信息 gt 选中 星期日 和 星期六 gt 对所
  • Eigen库使用入门

    为了将Matlab写的运动学程序转化为C 所编写的dll 需要用用到矩阵库Eigen Eigen库是一个使用C 源码编写的矩阵库 基本上能满足计算中所需要用到的运算 下面介绍一些库的入门学习 1 首先是关于固定大小矩阵 向量的定义 初始化
  • python 3.2 错误 ‘generator’ object has no attribute ‘next’

    下面是一段简单的示例 定义Generator函数 def func n for i in range n yield i 在for循环中输出 for i in func 3 print i 使用next 输出 r func 4 print
  • mysql数据存储文件结构图

    1 基本结构图 2 文件说明 数据库文件夹 每一个数据库都会建立一个单独的文件夹
  • 全同态加密(FHE)体系概述(初学版)

    同态加密定义 假设有这样一个场景 用户有一组私密数据 被加密存储在了第三方的云平台 现在 该用户想对这组数据进行某种处理 但是处理过程和结果都不想让第三方云平台看到 当然 用户可以选择将数据下载下来 处理后再加密上传 但是 假如这一组数据量
  • 一种全自动的牙齿CBCT三维个体识别和分割方法

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯 小白决心每天为大家带来经典或者最新论文的解读和分享 旨在帮助各位读者快速了解论文内容 个人能力有限 理解难免出现偏差 建议
  • python安装numpy+mkl 和 scipy库失败的原因

    1 使用系统自带的pip install scipy 安装scipy库时 出现了这样的错误 之所以会出现这样的错误 主要是因为安装系统自带的numpy库时 是numpy而不是numpy mkl库 所以导致Scipy安装失败 scipy依赖于
  • Windows映像劫持调试程序

    简介 映像劫持 也被称为 IFEO Image File Execution Options 在Windows NT架构的系统里 IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定 当一个可执行程序位于I
  • uln2003步进电机驱动程序

    ULN2003是一种常见的步进电机驱动芯片 可用于驱动4相 5线和6线步进电机 其驱动方式是通过输入高低电平来控制电机旋转的步进角度 以下是一般的ULN2003步进电机驱动程序框架 定义引脚 定义控制步进电机的引脚 包括4个输入引脚和4个输
  • Gutenberg 块编辑器 11.9 专注于导航菜单和块主题

    Gutenberg 11 9块编辑器于11月初发布 其中包含数十项增强功能 贡献者正在加速前进 在预计 12 月 14 日发布 WordPress 5 9 之前获得一些最终功能 11 9 版是最后一个包含即将到来的 WordPress 更新
  • chrome net::ERR_CERT_AUTHORITY_INVALID 问题

    浏览器输入 chrome net internals hsts 输入框输入你不需要安全检查的 域名 ok
  • centos7安装图形界面

    Centos7 安装图形界面 第一步 确认yum可用 1 1 判断yum是否可用 输入 yum list 如果出现以下信息 则代表不可用 1 2 更改配置 vi etc sysconfig network scripts ifcfg ens
  • Apache 之执行 CGI 脚本(Python 实现)

    目录 前言 1 查看并挑选 Python 版本 2 用 Python 实现一个简单的 CGI 脚本 3 查看 CGI 环境变量 总结 前言 本文记录了一个搭建 CGI 环境的示例 前文推荐 Apache 2 4 54 x64 安装及配置 系
  • 四、webpack的基本使用,处理字体文件,CSV,XML文件(Mhua)

    字体文件 webpack 处理字体文件配置 module rules test woff woff2 eot ttf otf asset resource 可以帮助我们载入任何类型的资源 type asset resource 加载数据 如
  • 快速玩转 Llama2!机器学习 PAI 最佳实践(二)—全参数微调训练

    前言 近期 Meta 宣布大语言模型 Llama2 开源 包含7B 13B 70B不同尺寸 分别对应70亿 130亿 700亿参数量 并在每个规格下都有专门适配对话场景的优化模型Llama 2 Chat Llama2 可免费用于研究场景和商