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

news/2024/10/22 12:12:48/

本实践将采用阿里云机器学习平台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 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并在线部署

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

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

# encoding=utf-8
import oss2
import 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)

What’s More

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

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

【往期最佳实践】: 快速玩转 Llama2!PAI 推出最佳实践(一)——低代码 Lora 微调及部署

参考资料:

  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 向中国境内公众提供服务,请遵守国家的各项法律法规要求,尤其不得从事或生成危害国家、社会、他人权益等行为和内容。


http://www.ppmy.cn/news/982060.html

相关文章

HDMI接口需注意的PCB可制造性设计问题

高清多媒体接口(High Definition Multimedia Interface)简称HDMI,是一种全数字化视频和声音发送接口,可以同时发送未压缩的视频及音频信号,且发送时采用同一条线材,大大简化了系统线路的安装难度,所以应用非常广泛&…

Vue3封装函数组件(ElImageViewer)预览图片

目录结构 index.vue <template><el-image-viewer v-if"show" v-bind"$attrs" hide-on-click-modal close"show false" /> </template><script setup> import { ref, watch } from "vue" import { ElImageV…

BPF之路

前言 BPF是内核中的顶级模块, 十分精妙, 相关书籍有限, 而且还都是从应用的视角看待BPF的, 我想写一系列文章, 从一个安全研究员的视角观察BPF, 以帮助更多的人学习和研究 linux内核观测技术一书中, 利用源码树中已有的包裹函数作为入门的例子, 层层包装导致编译时依赖繁多, …

Superset基础安装

Superset 介绍 ​ Superset快速&#xff0c;轻巧&#xff0c;直观&#xff0c;并带有各种选项&#xff0c;使各种技能的用户都可以轻松浏览和可视化其数据&#xff0c;从简单的折线图到高度详细的地理空间图。 1、特点 以下是Superset的主要功能的概述&#xff1a; 开箱即用的…

Redis学习路线(2)—— Redis的数据结构

一、Redis的数据结构 Redis是一个Key-Value的数据库&#xff0c;key一般是String类型&#xff0c;不过Value的类型却有很多&#xff1a; String&#xff1a; Hello WorldHash&#xff1a; {name: "jack", age: 21}List&#xff1a; [A -> B -> C -> C]Set…

【智能可视化---01】揭示Python AI中Matplotlib的魅力,提升数据洞察力!探索AI 中的Matplotlib,这一篇就够了!

Success keeps eluding me yet my passion abides. 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工智能领域优质创作者…

云计算结合数据科学突破信息泛滥(上)

大家好&#xff0c;本文将讨论有助于成功扩展数据科学项目的关键组成部分&#xff0c;涵盖了如何使用API采集数据&#xff0c;如何在云中存储数据&#xff0c;如何清理和处理数据&#xff0c;如何将数据可视化&#xff0c;以及如何通过交互式仪表盘来利用数据可视化的力量。 数…

Yarn上Streaming流自动调节资源设计

Streaming流自动调节资源 自动资源调节简单来说就是根据数据的输入速率和数据的消费速率来判断是否应该调节资源。如果输入速率大于消费速率&#xff0c;并且在输入速率还在攀升&#xff0c;则将该Job停止并调高Job的资源等级然后重启。如果消费速率大于输入速率&#xff0c;并…