Sixdes / Ielts-speaking-assistant

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ielts-speaking-assistant

简介

基于YouTube、b站等相关雅思口语模拟考试以及真实测试视频, 通过InternLM2微调得到的雅思口语测试助手。雅思口语测试助手旨在帮助模拟雅思口语测试与课程学习。

本项目将介绍关于数据获取、清洗、处理,使用InternLM2 微调、LMDeploy量化与推理,最后部署至 OpenXLab。

openxlab模型

模型链接ielts-speaking-assistant model

应用链接 ielts-speaking-assistant

数据集

从YouTube,b站爬取了200多个雅思口语对话模拟或者真实视频,从中提取对应音频,通过音频提取获得对话的原始文档,整理对话数据为 XTuner 多轮对话数据格式,如下:

[{
    "conversation":[
        {
            "system": "xxx",
            "input": "xxx",
            "output": "xxx"
        },
        {
            "input": "xxx",
            "output": "xxx"
        }
    ]
},
{
    "conversation":[
        {
            "system": "xxx",
            "input": "xxx",
            "output": "xxx"
        },
        {
            "input": "xxx",
            "output": "xxx"
        }
    ]
}]

进一步清洗数据获得最终的多轮对话数据集,用于后续指令微调。

微调

基座模型:InternLM2-chat-7b

考虑到雅思口语测试过程中存在不同需求:

  1. 模拟考官对使用者进行引导与提问
  2. 帮助使用者进行提示与回答建议

分别针对不同的目标需求修改指令对话数据集,使用 XTuner 进行微调。

xtuner 安装:

git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'

SFT训练

整理好数据后,即可进行微调。具体微调的 config 已经放置在 config/ 目录下,在安装好 xtuner 后可以进行训练:

xtuner train ${CONFIG_NAME_OR_PATH} --deepspeed deepspeed_zero2

模型转换

将得到的 PTH 模型转换为 HuggingFace 模型,生成 Adapter 文件夹

mkdir hf
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH_file_dir} ${SAVE_PATH}

模型合并

将 HuggingFace adapter 合并到大语言模型:

 xtuner convert merge \
     ${NAME_OR_PATH_TO_LLM} \
     ${NAME_OR_PATH_TO_ADAPTER} \
     ${SAVE_PATH} \
     --max-shard-size 2GB

可以通过运行接口文件或者通过 xtuner chat 进行模型对话:

# 运行文件
python ./cli_demo.py 
# 加载 Adapter 模型对话(Float 16)
xtuner chat ${NAME_OR_PATH_TO_ADAPTER} --prompt-template internlm2_chat

致谢

项目小伙伴(づ。◕‿‿◕。)づ

  • github@i-am-so-lucky-today
  • github@Sixdes
  • github@lifelinezhang

特别感谢

非常感谢书生·浦语团队对项目的支持( ̄▽ ̄)~*

感谢 OpenXLab 对项目部署的算力支持ヾ(^▽^ヾ)

About


Languages

Language:Python 100.0%