预训练语言模型微调和部署——《动手学大模型》实践教程第一章

目录

  • [1 前言](#1 前言)
  • [2 大语言模型基础](#2 大语言模型基础)
  • [3 实践代码](#3 实践代码)
    • [3.1 准备工作](#3.1 准备工作)
      • [3.1.1 了解Transformers工具包](#3.1.1 了解Transformers工具包)
      • [3.1.2 安装环境](#3.1.2 安装环境)
      • [3.1.3 处理好的工程包(演示代码和数据)](#3.1.3 处理好的工程包(演示代码和数据))
    • [3.2 基于集成版本进行微调](#3.2 基于集成版本进行微调)
      • [3.2.1 理解关键模块:](#3.2.1 理解关键模块:)
      • [3.2.2 训练模型](#3.2.2 训练模型)
    • [3.3 部署模型](#3.3 部署模型)
      • [3.3.1 Gradio Spaces教程](#3.3.1 Gradio Spaces教程)
      • [3.3.2 创建spaces](#3.3.2 创建spaces)
      • [3.3.3 关键推理代码](#3.3.3 关键推理代码)
      • [3.3.4 上传文件](#3.3.4 上传文件)

1 前言

从一些大模型相关的论文里学了一些理论知识,但是还是欠缺实践经验,本系列博文是在学习上交大张倬胜老师的开源项目的基础上写的相关总结,旨在提升自己的大模型实践能力。开源项目地址:dive-into-llms

备注:本项目大部分资源都需要科学上网才能获取。

免责声明

本系列博文所有技巧仅供参考,不保证百分百正确。若有任何问题,欢迎联系本人。

本系列博文所涉及的资源均来自互联网,如侵犯了您的版权请联系我删除,谢谢。

2 大语言模型基础








3 实践代码

该部分介绍预训练模型微调,在特定任务上进行微调,提升预训练模型在指定任务上的性能,并将微调后的模型部署成方便使用的Demo!

目标:

  1. 熟悉使用Transformers工具包
  2. 掌握预训练模型的微调、推理(解耦可定制版本 & 默认集成版本)
  3. 掌握利用Gradio Spaces进行Demo部署
  4. 了解不同类型的预训练模型的选型和应用场景

3.1 准备工作

3.1.1 了解Transformers工具包

https://github.com/huggingface/transformers

🤗 Transformers 提供了可以轻松地下载并且训练先进的预训练模型的 API 和工具。使用预训练模型可以减少计算消耗和碳排放,并且节省从头训练所需要的时间和资源。这些模型支持不同模态中的常见任务,例如:

📝 自然语言处理:文本分类、命名实体识别、问答、语言建模、摘要、翻译、多项选择和文本生成。

🖼️ 机器视觉:图像分类、目标检测和语义分割。

🗣️ 音频:自动语音识别和音频分类。

🐙 多模态:表格问答、光学字符识别、从扫描文档提取信息、视频分类和视觉问答。

详细的中文文档:https://huggingface.co/docs/transformers/main/zh/index

3.1.2 安装环境

以文本分类(e.g., 虚假新闻检测)为例

  1. 我们进入到文本分类的案例库,参考readme了解关键参数,下载requirements.txt和run_classification.py
    https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-classification

  2. 安装环境:

    (1)通过conda创建新的环境:

bash 复制代码
conda create -n llm python=3.9

(2)进入虚拟环境:

bash 复制代码
conda activate llm

(3)安装Transformers库

bash 复制代码
pip install transformers

(4)删除requirements.txt中自动安装的torch

bash 复制代码
pip install -r requirements.txt

若下载速度慢,可使用国内源:

bash 复制代码
pip [Packages] -i https://pypi.tuna.tsinghua.edu.cn/simple
bash 复制代码
conda install pytorch
  1. 准备数据:我们以Kaggle上的虚假推文数据集为例:
    https://www.kaggle.com/c/nlp-getting-started/data

3.1.3 处理好的工程包(演示代码和数据)

使用集成版本(代码较 为丰富、复杂,一般直接超参数调用,略有开发门槛)

TextClassification下载链接

3.2 基于集成版本进行微调

基于run_classification.py

3.2.1 理解关键模块:

  1. 加载数据(csv或json格式)

  2. 处理数据

  3. 加载模型

  4. 训练/验证/预测

3.2.2 训练模型

同时在开发集上验证,在测试集上预测,执行下述脚本:

bash 复制代码
python run_classification.py \
    --model_name_or_path  bert-base-uncased \
    --train_file data/train.csv \
    --validation_file data/val.csv \
    --test_file data/test.csv \
    --shuffle_train_dataset \
    --metric_name accuracy \
    --text_column_name "text" \
    --text_column_delimiter "\n" \
    --label_column_name "target" \
    --do_train \
    --do_eval \
    --do_predict \
    --max_seq_length 512 \
    --per_device_train_batch_size 32 \
    --learning_rate 2e-5 \
    --num_train_epochs 1 \
    --output_dir experiments/

3.3 部署模型

模型训练完毕后,我们可以在Gradio Spaces上搭建在线demos

3.3.1 Gradio Spaces教程

https://huggingface.co/docs/hub/en/spaces-sdks-gradio

3.3.2 创建spaces

https://huggingface.co/new-space?sdk=gradio

3.3.3 关键推理代码

具体见工程包中的app.py

3.3.4 上传文件

将app.py、环境配置文件和模型上传到Gradio Spaces

  1. 配置文件(requirements.txt)
bash 复制代码
transformers==4.30.2
torch==2.0.0
  1. 文件概览

  2. Demo效果 成功部署的案例供参考:https://huggingface.co/spaces/Donvink/text-classification,其中在右上角"Files"栏目可以看到源码,点击APP可以直接运行。

备注:在Spaces平台可以看到每周的热点Demo,且可以搜索感兴趣的大模型、Demo进行尝试。

相关推荐
渡我白衣13 小时前
从森林到梯度——梯度提升树的原理、调参与实战
人工智能·深度学习·神经网络·目标检测·机器学习·计算机视觉·自然语言处理
杜子不疼.13 小时前
【大模型 】API 对接指南:OpenAI/Claude/LLaMA 3 调用技巧
llama
霍格沃兹软件测试开发13 小时前
大语言模型提示词工程教程:实现自动化工具推理
microsoft·语言模型·自动化
AI人工智能+13 小时前
车辆合格证识别技术:通过计算机视觉与自然语言处理的深度融合,解决了传统人工录入效率低、易出错的问题
深度学习·ocr·车辆合格证识别
m0_6038887113 小时前
Over-Searching in Search-Augmented Large Language Models
人工智能·ai·语言模型·自然语言处理·论文速览
狮子座明仔13 小时前
GDPO:英伟达提出多奖励强化学习的“解耦归一化“策略,解决GRPO的优势崩溃问题
人工智能·gpt·语言模型·自然语言处理
rgb2gray13 小时前
论文深度解析:基于大语言模型的城市公园多维度感知解码与公平性提升
大数据·人工智能·机器学习·语言模型·自然语言处理·数据分析·可解释
huazi-J15 小时前
Datawhale 大模型基础与量化微调 task0:Tokenizer
语言模型·大模型·tokenizer·datawhale
kisshuan123961 天前
【深度学习】使用RetinaNet+X101-32x4d_FPN_GHM模型实现茶芽检测与识别_1
人工智能·深度学习
哥布林学者1 天前
吴恩达深度学习课程五:自然语言处理 第一周:循环神经网络 (六)长短期记忆 LSTM
深度学习·ai