大语言模型实验
本实验带您体验如何通过阿里云PAI-DSW实现单机版本的千问-1.8B对话功能,一起来动手完成吧。
场景简介
本实验带您体验如何通过阿里云PAI-DSW实现单机版本的千问-1.8B对话功能,一起来动手完成吧。
实验室资源方式简介
进入实操前,请确保阿里云账号满足以下条件:
个人账号资源
使用您个人的云资源进行操作,资源归属于个人。
平台仅提供手册参考,不会对资源做任何操作。
确保已完成云工开物300元代金券领取。
已通过实名认证且账户余额≥0元。
本场景主要涉及以下云产品和服务:DSW、Qwen-1.8B-Chat
本实验,预计产生资源消耗:10.488元/小时。
下行流量:不消耗下行流量
生图GPU消耗费用预估:10.490元/小时
如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。
领取专属权益及开通授权
在开始实验之前,请先点击右侧屏幕的“进入实操”再进行后续操作

第一步:领取300元高校专属权益优惠券(若已领取请跳过)。

实验产生的费用优先使用优惠券,优惠券使用完毕后需您自行承担。

第二步:进入阿里云官网,搜索【试用】,点击【立即试用】

可试用人群选【个人认证】,选择【交互式建模 PAI-DSW】,点击【立即试用】

点击【立即试用】

提交成功后,点击【前往控制台】

可参考文档完成创建DSW角色及授权等操作

第三步:领取学生专属300元优惠券后,点击访问人工智能平台 PAI-点击“立即开通”,完成PAI平台开通与授权。

后期若想再次进入PAI平台可通过“控制台”进入。

跳转至控制台后,点击人工智能平台PAI,进入PAI平台页面。

实验步骤
一、创建实例
重要请注意:为了确保实验流程顺利进行,请先选择合适的工作区间。
在PAI平台左侧选项卡中找到交互式建模(DSW),点击新建实例

配置实例,其中
资源规格:ecs.gn7i-c8g1.2xlarge (8 vCPU, 30 GiB, NVIDIA A10 * 1)
镜像:dsw-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai-training-algorithm/llm_deepspeed:v0.2.1
配置完毕点击确定,当资源准备完毕后,点击“打开”


二、进入Notebook调试页面
在左侧文件目录空白处,单击鼠标右键,新建一个Notebook。使用Python3,单击Select。


配置环境
1、下载Qwen-1.8B-Chat
将下面的代码复制到Notebook的代码框中,点击代码框左侧的“运行按钮”:
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/DeepSpeed_Notebook/qwen-1_8b-chat.tar.gz", "cn-hangzhou": "https://atp-modelzoo.oss-cn-hangzhou-internal.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/qwen-1_8b-chat.tar.gz", "cn-shenzhen": "https://atp-modelzoo-sz.oss-cn-shenzhen-internal.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/qwen-1_8b-chat.tar.gz", "cn-beijing": "https://atp-modelzoo-bj.oss-cn-beijing-internal.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/qwen-1_8b-chat.tar.gz", } path = url_link[dsw_region] if dsw_region in url_link else "https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/qwen-1_8b-chat.tar.gz" os.environ['LINK_CHAT'] = path !wget $LINK_CHAT !mkdir qwen-1_8b-chat/ !tar -xvf qwen-1_8b-chat.tar.gz -C qwen-1_8b-chat/
待代码运行完毕,将鼠标置于刚运行的代码块的下侧,如图所示,单击“+Code”来新建一个代码框:

2、下载示例训练数据
下载训练所需的数据,这里我们提供了一份古诗生成数据。
!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/ch_poetry_train.json !wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/DeepSpeed_Notebook/ch_poetry_test.json
3、微调模型
可以直接运行写好的训练脚本,进行模型微调。
其中,lora_dim=0时为全量参数微调,lora_dim>0为LoRA轻量化微调。
新建代码框,并将下述代码复制到代码框中,并运行:
!mkdir output/ !cp qwen-1_8b-chat/*.py output// !cp qwen-1_8b-chat/*.json output/ !rm output/model.safetensors.index.json
新建代码框,并将下述代码复制到代码框中,并运行:
!deepspeed /ml/code/train_sft.py \ --model_name_or_path qwen-1_8b-chat/ \ --train_path ch_poetry_train.json \ --valid_path ch_poetry_test.json \ --learning_rate 1e-5 \ --lora_dim 64 \ --max_seq_len 256 \ --model qwen \ --num_train_epochs 1 \ --per_device_train_batch_size 64 \ --zero_stage 2 \ --gradient_checkpointing \ --print_loss \ --deepspeed \ --output_dir output/ \ --offload
这一步耗时较久,请同学们耐心等待。
4、试玩模型
模型训练完成后,下载我们提供的webUI demo,试玩微调完成的模型(注意模型地址替换为自己训练好的模型地址)。

!pip install gradio==3.37.0
import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM from transformers.generation import GenerationConfig # 模型地址替换为自己训练好的模型地址 model_path = "qwen-1_8b-chat/" tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True).eval().cuda() model.generation_config = GenerationConfig.from_pretrained(model_path, trust_remote_code=True) def inference(text): res, history = model.chat(tokenizer, text, history=None) return res demo = gr.Blocks() with demo: input_prompt = gr.Textbox(label="输入", value="写一首题为“春天”的诗,一共二十个字。", lines=1) generated_txt = gr.Textbox(label="输出", lines=1) b1 = gr.Button("发送") b1.click(inference, inputs=[input_prompt], outputs=generated_txt) demo.launch(enable_queue=True)
我们让模型生成一首诗,结果如下:

有没有觉得大语言模型很神奇呢,尝试咨询它各种各样的问题吧。
由于是单机版本,在我们提供了古诗词生成数据的前提下,能够很好地完成古诗词的创作,其他问答表现欠佳。
背景知识
PAI
人工智能平台PAI是阿里云专为开发者打造的一站式机器学习平台,其主要由可视化建模(Designer)、交互式建模(DSW)、分布式训练(DLC)、模型在线服务(EAS)等核心功能模块组成,为您提供数据标注、模型开发、模型训练、模型部署的AI全链路研发服务,具有支持多种开源框架、多项AI优化能力、灵活易用的优势
DSW(Data Science Workshop)
DSW是为算法开发者量身打造的一站式AI开发平台,集成了JupyterLab、WebIDE、Terminal多种云端开发环境,提供代码编写、调试及运行的沉浸式体验。提供丰富的异构计算资源,预置多种开源框架的镜像,实现开箱即用的高效开发模式。
LLM(Large Language Model)
大语言模型(LLM)是指参数数量达到亿级别的神经网络语言模型,如GPT-3、GPT-4、PaLM、PaLM2等。这些模型通过大量的文本数据训练,能够执行多种自然语言处理任务,包括但不限于文本生成、翻译、摘要、问答等
千问大模型
千问 是阿里云推出的一个不断进化的AI大模型,旨在理解和生成人类语言,作为人们生活和工作的智能助手。该模型基于千问大模型设计,具有强大的自然语言处理能力,能够执行多种任务,包括但不限于文本生成、对话理解、知识问答等。
清理资源
如果无需继续使用工具,您可以按照以下操作步骤停止或删除工具。
前往PAI控制台
在工作空间页面的左侧导航栏中单击模型开发与训练—交互式建模(DSW)。在交互式建模(DSW)页面,找到目标服务。单击其右侧操作列下的停止/删除。

如果需要继续使用,请随时关注账号扣费情况,避免模型会因欠费而被自动停止。
关闭实验
在完成实验后,点击 结束实操

点击 取消 回到实验页面,点击 确定 退出实验界面,关闭页面结束实验

















