大模型实战营第四次课笔记

这是大模型实战营第四次课的笔记

背景知识

Finetune概述

主要分为增量预训练以及指令微调这两种模型,增量预训练对显存要求较高,主要是为了让模型获得更多的知识;而指令微调对显存要求较低,主要是为了适配对话需求,能更好地回答问题。

指令微调

首先要将数据组织成JSON格式

之后XTuner会将JSON格式的数据自动嵌入对话模板,以完成后续训练

LoRA & QLoRA

  • LoRA & QLoRA 简介

  • Full LoRA QLoRA比较

XTuner

  • 简介

  • 快速上手

动手实践

oasst1 微调 InternLM-7B

按照这部分的引导,开始训练(单A100卡+DeepSpeed ZeRO-2大约需要 2h/epoch):

训练中途可以看到evaluation的结果,这个挺不错

转换为HuggingFace模型,合并后在命令行运行,结果如下

转换为Huggingface模型时若报错:

1
2
3
4
Error: 
mkl-service + Intel(R) MKL:
MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library.
Try to import numpy first or set the threading layer accordingly. Set MKL_SERVICE_FORCE_INTEL to force it.

执行如下代码即可解决

export MKL_THREADING_LAYER=GNU

自定义微调 InternLM-7B(Medication QA数据集

按照这部分的引导,开始训练(单A100卡+DeepSpeed ZeRO2大约需要 2min/epoch

命令行运行结果如下

MS-Agent 微调 InternLM-7B

按照这部分的引导, 直接下载已微调好的Adapter, 注册serper账号(不能用gmail注册),之后用Lagent结合InternLM-7B完成一个具有API调用功能的智能助手。(需要2张A100推理)

命令行运行结果如下

问了一个关于Evillious Chronicles(艾维里奥斯编年史)的问题,生成时间特别长,要十几分钟,而且不是很准确。