AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


[全网首发]Phi-3微调项目实践与教程(XTuner 版)
发布日期:2024-05-01 07:02:21 浏览次数: 1794 来源:机智流


SmartFlowAI


点击上方蓝字关注我们


微软发布了 Phi-3 模型,XTuner 团队对 Phi-3 微调进行了光速支持!!!开源同时社区中涌现了 Phi-Tutorial 手把手教大家使用 XTuner 微调 Phi-Tutorial 模型。 

XTuner:http://github.com/InternLM/XTuner

Phi-Tutorial:https://github.com/SmartFlowAI/Phi-Tutorial/ 

欢迎 Star

Phi-3 概览

  1. Phi-3模型情况:
    1. 微软研究院紧随 Llama-3发布后,迅速发布了Phi-3系列模型的技术报告。
    2. Phi-3系列包括三个尺寸的模型:Phi-3-mini、Phi-3-small、Phi-3-medium。
  2. Phi-3-mini模型的特点:
    1. 参数规模:拥有3.8B参数,属于大语言模型范畴。
    2. 训练数据量:使用了3.3T Tokens的训练数据。
    3. 上下文长度:默认上下文长度为4K,但通过LongRope技术可扩展至128K。
    4. 性能表现:在各类基准和内部测试中,其性能可与Mixtral 8x7B和GPT-3.5等模型相媲美。
    5. 应用优势:主打“小而精”,4位量化的Phi-3-mini可以在带有A16仿生芯片的iPhone上运行,每秒生成超过12个token。
  3. Phi-3-Small和Phi-3-Medium模型的特点:
    1. 参数规模:Phi-3-Small拥有7B参数量,而Phi-3-Medium则拥有14B参数量。
    2. 词汇量与上下文长度:Phi-3-Small具有100,352个词汇量,默认上下文长度为8K;Phi-3-Medium使用与Phi-3-mini相同的分词器和架构。
    3. 训练数据量:Phi-3-Medium的训练数据量为4.8T Tokens。
    4. 能力表现:根据描述,Phi-3-Small和Phi-3-Medium的能力均显著高于Phi-3-Mini。

根据各类基准和内部测试的结果来看,其总体性能可以与 Mixtral 8x7B 和 GPT-3.5 等模型相媲美(phi-3-mini 在 MMLU 上达到 69%,在 MT-bench 上达到 8.38)

XTuner 显存门槛测试

在正式微调 Phi-3 小助手认知之前,我们先来看一下 XTuner 团队光速测试微调 Phi-3 所需要的显存门槛。从上表中我们可以发现

  • 全量微调 4k 上下文的 Phi-3 时,如果直接使用 ZeRO3 训练,至少要两张 80G 的显卡;但借助 XTuner 提供的序列并行功能,最小显存门槛从 2 * 80GB 下降到 2 * 40GB。
  • QLoRA 微调 128k 上下文的 Phi-3 时,在开启序列并行设置从 1 设置为 2 后,最小显存门槛从 80GB 下降到 2 * 40GB 或者 4 * 24 GB(4 张 3090 能玩)。
  • 此处推荐大家将序列并行设置为 2

实践教程

Web Demo 部署

本小节将带大家手把手在 InternStudio 部署 Phi-3 Web Demo。

环境配置

conda create -n phi3 python=3.10
conda activate phi3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia

conda install git
git-lfs install

下载 Phi-3 模型

首先通过 OpenXLab 下载 Phi-3-mini-128k-instruct 这个模型。

mkdir -p ~/model
cd ~/model
git clone https://openxlab.org.cn/models/detail/MrCat/Phi-3-mini-128k-instruct Phi-3-mini-128k-instruct

或者软链接 InternStudio 中的模型

ln -s /root/share/new_models/microsoft/Phi-3-mini-128k-instruct \
    ~/model/Phi-3-mini-128k-instruct

安装 XTuner

cd ~
git clone https://github.com/InternLM/XTuner
cd XTuner
pip install -e .

运行 web_demo.py

streamlit run ~/Phi-Tutorial/tools/internstudio_web_demo.py \
  /root/model/Phi-3-mini-128k-instruct

通过此命令我们就成功本地运行 Phi-3 的 Web Demo, 然后就可以和Phi-3-mini-128k-instruct愉快的对话了,此时问“你是”,模型的自我认识是 PhilosopherAI。

XTuner 微调 Phi-3 个人小助手认知

在本节我们尝试让 Phi-3 有"它是机智流打造的人工智能助手"的自我认知,最终效果图如下所示:

自我认知训练数据集准备

首先我们通过以下脚本制作自我认知的数据集

cd ~/Phi-Tutorial
python tools/gdata.py

数据生成脚本 gdata.py 如下所示,实现了产生 2000 条自我认知的数据的功能,在正式环境中我们需要对各种数据进行配比,为了社区同学们能够快速上手,本例子就采用了过拟合的方式。

import json

# 输入你的名字或者机构
name = '机智流'
# 重复次数
n = 2000

data = [
    {
        "conversation": [
            {
                "system":"你是一个懂中文的小助手",
                "input""你是(请用中文回答)",
                "output""您好,我是 {},一个由 机智流打造的人工智能助手,请问有什么可以帮助您的吗?".format(name)
            }
        ]
    }
]

for i in range(n):
    data.append(data[0])

with open('data/personal_assistant.json''w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

以上脚本在生成了 ~/Phi-Tutorial/data/personal_assistant.json 数据文件格式如下所示:

[
    {
        "conversation": [
            {
                "system""你是一个懂中文的小助手",
                "input""你是(请用中文回答)",
                "output""您好,我是机智流,一个由 机智流打造的人工智能助手,请问有什么可以帮助您的吗?"
            }
        ]
    },
    {
        "conversation": [
            {
                "system""你是一个懂中文的小助手",
                "input""你是(请用中文回答)",
                "output""您好,我是机智流,一个由 机智流打造的人工智能助手,请问有什么可以帮助您的吗?"
            }
        ]
    },
········· 此处省略 
]

XTuner 配置文件准备

小编在 XTuner 官方的 config 基础上修改了模型路径等关键参数,为大家直接准备好了 配置文件,可以直接享用~

https://github.com/SmartFlowAI/Phi-Tutorial/blob/main/configs/assistant/phi3_3b_128k_instruct_qlora_assistant.py

训练模型

cd ~/Phi-Tutorial/

xtuner train configs/assistant/phi3_3b_128k_instruct_qlora_assistant.py --work-dir /root/phi3_pth

# Adapter PTH 转 HF 格式
xtuner convert pth_to_hf /root/phi3_pth/phi3_3b_128k_instruct_qlora_assistant.py \
  /root/phi3_pth/iter_500.pth \
  /root/phi3_pth

# 模型合并
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Phi-3-mini-128k-instruct \
  /root/phi3_hf_adapter\
  /root/phi3_hf_merged

推理验证

streamlit run ~/Phi-Tutorial/tools/internstudio_web_demo.py \
  /root/phi3_hf_merged

到此为止我们就让 Phi3 具备了“他是由机智流打造的人工智能助手”的个人认知,本文演示平台为 InternStudio,如其他平台只需适当调整相关路径也能比较顺畅的运行起来,XTuner 玩转 Phi3 图片理解更多玩法请参考:https://github.com/SmartFlowAI/Phi-Tutorial/(欢迎 Star)


SmartFlowAI


新鲜时事

AI  前线

扫码获取更多精彩

关注机智流

                                         



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询