流程化微调大模型:香科大开源LMFlow

介绍流程化微调大模型 LMFlow库和使用示例

流程化微调大模型:香科大开源LMFlow

关注程旭源,点开就有收获 ...
流程化微调大模型:香科大开源LMFlow
介绍流程化微调大模型 LMFlow库和使用示例
作 者丨陈江源
学习笔记
流程化微调大模型:香科大开源LMFlow

Part1LMFlow

香港科技大学新开源库LMFlow[1],有四大特性:可扩展、轻量级、定制化和完全开源。

https://github.com/OptimalScale/LMFlow

我们微调大语言模型做对话机器人,需要以下几个步骤:预训练、有监督微调、指令微调和人类价值观对齐。LMFlow 库可以加载现有的开源大模型,灵活组合这套流程的各环节,有点像HuggingFace的pipline思想,见下文微调示例。

目前支持几种流水线:流程化微调大模型:香科大开源LMFlow

Part2上手指南

LMFlow使用文档[2]

https://optimalscale.github.io/LMFlow/

使用 conda 安装必要的依赖:

git clone https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .

运行 bash 脚本下载所需的数据集:

cd data && ./download.sh && cd -

我们也可以在指定的数据集目录下提供 .json 文件的列表。自定义数据的格式:

1、text2text 格式
{
  "type""text2text",
  "instances": [
    {
      "input""Question: The Transformer architecture [START_REF]",
      "output""N/A"
    },
    ...
  ]
}

2、text_only
{
  "type""text_only",
  "instances": [
    {
      "text""Defintion: 。。。. For example,。。。Input: Question: Sentence: 。。。. nQuestion: 。。。? n Output: NA nn"
    },
    ...
  ]
}

Part3微调示例

通过pipeline_name传入名称即可,例如:inferencer、finetuner、evaluator等。官方demo[3]微调代码的示例:

#!/usr/bin/env python
# coding=utf-8
import sys
from transformers import HfArgumentParser
from lmflow.args import (
    ModelArguments,
    DatasetArguments,
    AutoArguments)
from lmflow.datasets.dataset import Dataset
from lmflow.models.auto_model import AutoModel
from lmflow.pipeline.auto_pipeline import AutoPipeline


def main():
   # Parses arguments
    pipeline_name = "finetuner"
    PipelineArguments = AutoArguments.get_pipeline_args_class(pipeline_name)

    parser = HfArgumentParser((ModelArguments, DatasetArguments, PipelineArguments))
    if len(sys.argv) == 2 and sys.argv[1].endswith(".json"):
        # 如果传入json参数文件
        model_args, data_args, pipeline_args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1]))
    else:
        model_args, data_args, pipeline_args = parser.parse_args_into_dataclasses()

    # Initialization
    finetuner = AutoPipeline.get_pipeline(
        pipeline_name=pipeline_name,
        model_args=model_args,
        data_args=data_args,
        pipeline_args=pipeline_args,
    )
    dataset = Dataset(data_args)
    model = AutoModel.get_model(model_args)

    # Tokenization and text grouping must be done in the main process
    with pipeline_args.main_process_first(desc="dataset map tokenization"):
        tokenized_dataset = model.tokenize(dataset)
        lm_dataset = finetuner.group_text(
            tokenized_dataset,
            model_max_length=model.get_max_length(),
        )

    # Finetuning
    tuned_model = finetuner.tune(model=model, lm_dataset=lm_dataset)


if __name__ == '__main__':
    main()

参考资料

[1]

LMFlow: http://lmflow.com/

[2]

LMFlow使用文档: https://optimalscale.github.io/LMFlow/

[3]

LMFlow: https://github.com/OptimalScale/LMFlow

流程化微调大模型:香科大开源LMFlow

END

流程化微调大模型:香科大开源LMFlow

大模型加速微调和训练,不得不掌握的方法,代码解析和应用示例

2023-03-29

流程化微调大模型:香科大开源LMFlow

开源对话机器人:Rasa3安装和基础入门

2023-02-27

流程化微调大模型:香科大开源LMFlow

如何搭建一个智能对话机器人?行业应用和问答技术梳理

2023-02-02

流程化微调大模型:香科大开源LMFlow

清华刘知远:走近NLP学术界

2023-02-02

流程化微调大模型:香科大开源LMFlow

深度学习项目,代码结构、风格和习惯,让自己的代码更Pythonic!

2022-12-07

流程化微调大模型:香科大开源LMFlow

自驱力超强的羊驼?斯坦福Alpaca媲美text-davinci-003,成本不到600美元!

2023-03-14

流程化微调大模型:香科大开源LMFlow


流程化微调大模型:香科大开源LMFlow星标公众号精彩不错过
流程化微调大模型:香科大开源LMFlow
流程化微调大模型:香科大开源LMFlow

善利万物而不争
◆◆◆◆◆◆◆◆◆◆◆

流程化微调大模型:香科大开源LMFlow

点赞”是喜欢,“在看、分享”是真爱流程化微调大模型:香科大开源LMFlow

<

原创文章。转载请注明: 作者:meixi 网址: https://www.icnma.com
(0)
meixi管理
上一篇 06/04/2023 13:32
下一篇 06/04/2023 13:33

猜你想看

发表回复

登录后才能评论