大模型训练框架swift简单使用
Healthy Mind Lv3

​ 在做大模型开发的时候,会遇到模型选型的问题,需要测试不通模型的效果,对于一开始刚接触大模型小白的我,是一个一个模型尝试,在环境部署,模型训练效果对比,在不同环境中切换。后来接触到了swfit框架后就相对轻松很多了。

swift GitHub地址 该项目是由阿里达摩院推出的,和这个同类型的项目还有 Axolotl, Llama-Factory ,有了swift框架就不用在一个一个的撘环境了

安装部署就不说了很简单在 github上有说明,

​ 这里主要总结和记录一下如何扩展模型类型和怎么组装训练数据

​ 我用的模型是chinese-llama-alpaca-2 这个模型是基于llama2进行训练的由于llama2只支持英文,说以有人就弄出来这个,项目,一开始我用swfit的 llama魔板来做训练,结果训练的结果很差,就想着看看是哪里问题。于是就开始翻代码。最后发现在swift/llm/utils/template.py 的639 行这里模板 和chinese-llama-alpaca-2 里的模板有差异在[INST] <> 中[INST]少了一个“空格”

1
2
3
4
5
6
#swift 框架里 llama的魔板 
register_template(
TemplateType.llama,
Template(['<s>[INST] '], ['{{QUERY}} [/INST]'], ['</s><s>[INST] '],
['</s>'], LLAMA_DEFAULT_SYSTEM,
['<s>[INST] <<SYS>>\n{{SYSTEM}}\n<</SYS>>\n\n']))
1
2
3
4
5
6
#这个是chinese-llama-alpaca-2   main/scripts/training/build_dataset.py
PROMPT_TEMPLATE = (
"[INST] <<SYS>>\n"
"You are a helpful assistant. 你是一个乐于助人的助手。\n"
"<</SYS>>\n\n{instruction} [/INST]"
)

于是就对swift做了一个扩展修改如下 swift/llm/utils/model.py 文件添加了如下几处

  1. 在120行后面添加如下代码
1
chinese_llama_alpaca_2 = 'chinese-llama-alpaca-2'
  1. 模型注册在395行添加如下代码

    1
    2
    3
    4
    5
    6
    @register_model(
    ModelType.chinese_llama_alpaca_2,
    'hfl/chinese-llama-2-13b',
    LoRATM.llama2,
    TemplateType.chinese_llama,
    support_vllm=True)

修改文件swift/llm/utils/template.py

1.添加模型类型 在35行

1
chinese_llama = 'chinese_llama'

2.注册模板在645行

1
2
3
4
5
6
CHINESE_LLAMA_DEFAULT_SYSTEM = ("You are a helpful assistant. 你是一个乐于助人的助手。\n")
register_template(
TemplateType.chinese_llama,
Template(['<s>[INST] '], ['{{QUERY}} [/INST]'], ['</s><s>[INST] '],
['</s>'], CHINESE_LLAMA_DEFAULT_SYSTEM,
['<s> [INST] <<SYS>>\n{{SYSTEM}}\n<</SYS>>\n\n']))