大语言模型实验

更新时间:
复制为 MD 格式

本实验带您体验如何通过阿里云PAI-DSW实现单机版本的千问-1.8B对话功能,一起来动手完成吧。

场景简介

本实验带您体验如何通过阿里云PAI-DSW实现单机版本的千问-1.8B对话功能,一起来动手完成吧。

实验室资源方式简介

进入实操前,请确保阿里云账号满足以下条件:

  • 个人账号资源

    • 使用您个人的云资源进行操作,资源归属于个人。

    • 平台仅提供手册参考,不会对资源做任何操作。

  • 确保已完成云工开物300元代金券领取。

  • 已通过实名认证且账户余额≥0元。

本场景主要涉及以下云产品和服务:DSW、Qwen-1.8B-Chat

本实验,预计产生资源消耗:10.488元/小时。

  • 下行流量:不消耗下行流量

  • 生图GPU消耗费用预估:10.490元/小时

如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

领取专属权益及开通授权

在开始实验之前,请先点击右侧屏幕的“进入实操”再进行后续操作

image

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

image

重要

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

学生认证

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

image

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

image

点击【立即试用】

8fabec78dd252ea75a48e39c14300359

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

856e80fa6d433c78ba74bc6a77ee57fe

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

b125a56e7aa8a4548ec51b30d46e06c1

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

image

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

image

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

image

实验步骤

  • 一、创建实例

    重要

    请注意:为了确保实验流程顺利进行,请先选择合适的工作区间。

    1. PAI平台左侧选项卡中找到交互式建模(DSW),点击新建实例

      image

    2. 配置实例,其中

      • 资源规格: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

      配置完毕点击确定,当资源准备完毕后,点击“打开”

      image

      image

  • 二、进入Notebook调试页面

    1. 在左侧文件目录空白处,单击鼠标右键,新建一个Notebook。使用Python3,单击Select。

      image

      image

    2. 配置环境

      • 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/
        

        image

        待代码运行完毕,将鼠标置于刚运行的代码块的下侧,如图所示,单击“+Code”来新建一个代码框:

        image

      • 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

        image

      • 3、微调模型

        可以直接运行写好的训练脚本,进行模型微调。

        其中,lora_dim=0时为全量参数微调,lora_dim>0LoRA轻量化微调。

        新建代码框,并将下述代码复制到代码框中,并运行:

        !mkdir output/
        !cp qwen-1_8b-chat/*.py output//
        !cp qwen-1_8b-chat/*.json output/
        !rm output/model.safetensors.index.json
        

        image

        新建代码框,并将下述代码复制到代码框中,并运行:

        !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
        

        image

        这一步耗时较久,请同学们耐心等待。

      • 4、试玩模型

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

        image

        !pip install gradio==3.37.0

        image

        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)
        

        image

        我们让模型生成一首诗,结果如下:

        image

        有没有觉得大语言模型很神奇呢,尝试咨询它各种各样的问题吧。

        由于是单机版本,在我们提供了古诗词生成数据的前提下,能够很好地完成古诗词的创作,其他问答表现欠佳。

背景知识

  • 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)页面,找到目标服务。单击其右侧操作列下的停止/删除。

    image

  • 如果需要继续使用,请随时关注账号扣费情况,避免模型会因欠费而被自动停止。

关闭实验

  • 在完成实验后,点击 结束实操

    image

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

    image