AI逻辑推理微调#Datawhale AI 夏令营

本挑战适合想 学习大语言模型、想用AI完成逻辑推理任务 的学习者参与,datawhale官方也有详尽的文档:从零入门AI逻辑处理

Task3 baseline02 微调方案

微调

指在预训练模型(Pre-trained model)的基础上,针对特定任务或数据领域,对部分或全部模型参数进行进一步的训练和调整(Fine Tune)。预训练模型通常是在大规模数据集上训练得到的,具有一定的通用性和泛化能力。微调的目标是在较小的目标数据集上,通过有限的训练数据,使模型更好地适应特定任务,从而提高模型在该任务上的性能。

1、环境配置

先去Datawhale2024年第二届世界科学智能大赛逻辑推理赛道:复杂推理能力评估baseline2下载数据集,再在PAI-DSW中选择PAI-DSW、GPU环境、ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.14.0环境。CPU环境会导致后面vllm加速失败。

2、配置导入

选择Other-terminal,注意切换为英文输入法

git clone 
https://www.modelscope.cn/datasets/Datawhale/DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora.git

跑完即可获取到前面的数据集

双击到左边的DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora文件。

2.1 lora微调

LoRA介绍

LoRA(Low-Rank Adaptation)微调是一种高效的模型微调技术,特别适用于大型预训练语言模型的适应性调整。LoRA的核心思想是通过引入低秩矩阵来调整模型的权重,从而在不显著增加模型参数数量的情况下,实现对模型的微调。

LoRA 的优势

-可以针对不同的下游任务构建小型 LoRA 模块,从而在共享预训练模型参数基础上有效地切换下游任务。

-LoRA 使用自适应优化器(Adaptive Optimizer),不需要计算梯度或维护大多数参数的优化器状态,训练更有效、硬件门槛更低。

-LoRA 使用简单的线性设计,在部署时将可训练矩阵与冻结权重合并,不存在推理延迟。

 LoRA 与其他方法正交,可以组合。

2.2.1 lora微调配置

选择lora.ipynb,安装环境

!pip install modelscope==1.9.5
!pip install "transformers>=4.39.0"
!pip install streamlit==1.24.0
!pip install sentencepiece==0.1.99
!pip install transformers_stream_generator==0.0.4
!pip install datasets==2.18.0
!pip install peft==0.10.0
!pip install openai==1.17.1
!pip install tqdm==4.64.1
!pip install transformers==4.39.3
!python -m pip install setuptools==69.5.1
!pip install vllm==0.4.0.post1
!pip install nest-asyncio
!pip install accelerate
!pip install tf-keras

之后一步步根据代码运行,注意重启notebook内核,在左上角选择kernel-restart kernel

完成后进入vllm加速

2.2 vllm加速

vLLM(Virtual Large Language Model)是一个由伯克利大学LMSYS组织开源的大规模语言模型高速推理框架。它的设计目标是在实时应用场景中大幅提升语言模型服务的吞吐量和内存使用效率。vLLM的特点包括易于使用、与Hugging Face等流行工具无缝集成以及高效的性能。

2.2.1 vllm加速启动

接下来请打开start_vllm.ipynb,执行后我们通过vllm的类openai接口成功将微调后的模型部署到8000端口。启动即可

def call_qwen_api(MODEL_NAME, query):
    # 这里采用dashscope的api调用模型推理,通过http传输的json封装返回结果
    
    client = OpenAI(
        base_url="http://localhost:8000/v1",
        api_key="sk-xxx", # 随便填写,只是为了通过接口参数校验
    )
    completion = client.chat.completions.create(
      model=MODEL_NAME,
      messages=[
                # {'role':'system','content':'你是一个解决推理任务的专家,你需要分析出问题中的每个实体以及响应关系。然后根据问题一步步推理出结果。并且给出正确的结论。'},

        {"role": "user", "content": query}
      ]
    )
    return completion.choices[0].message.content

注意代码启动后不要关闭,保持运行即可

2.3 启动主函数

整体推理代码就是baseline2_main.ipynb。在官网http://competition.sais.com.cn/competitionDetail/532231/format

获取数据集round1_test_data后粘贴到同一目录下,运行baseline2_main.ipynb就可以可以推理完成后直接返回最终结果。在官网提交'upload.jsonl'文件即可。

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值