自定义数据集使用llama_factory微调模型并导入ollama

这篇具有很好参考价值的文章主要介绍了自定义数据集使用llama_factory微调模型并导入ollama。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文所有操作均在linux系统下完成

llama_factory安装

参考github的安装命令

git clone https://github.com/hiyouga/LLaMA-Factory.git
conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -e .[metrics]

llama_factory运行

参考github,使用以下命令启动LLaMA Factory web页面:(web ui界面只支持单卡运行,如需多卡微调请参考github相关部分)

此外可以选择模型下载源,这里推荐国内用户使用魔搭社区下载渠道。

export CUDA_VISIBLE_DEVICES=0 # `set CUDA_VISIBLE_DEVICES=0` for Windows
export USE_MODELSCOPE_HUB=1 # 使用魔搭社区下载渠道
python src/train_web.py # or python -m llmtuner.webui.interface

 成功启动后会进入web操作界面:

ollama下载的模型能通过llamafactory训练吗,llama

微调数据集准备

 首先按照alpaca格式准备训练数据,格式范例如下:

 [
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是XX大模型,一个由XXX开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
  },
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是XX大模型,一个由XXX打造的人工智能助手,请问有什么可以帮助您的吗?"
  }
  ]

 其中,instruction和input可以都填充进内容,如把问题作为input,把“回答问题这一要求”作为instruction。据说这种指令微调数据集的格式效果比较好。

准备数据之后,应上传所用到的数据集至项目路径下data文件夹。同时需要将新数据集在dataset_info.json下进行登记注册。

ollama下载的模型能通过llamafactory训练吗,llama

其中“TQA_en”是数据集的自定义名称,“file_name”是同文件夹路径下,数据集json的文件名,“file_sha1”需要通过计算获得,该字段要求并不严格,有即可,主要为了区分重复文件,作uuid使用。计算方法如下:

import hashlib

def calculate_sha1(file_path):
    sha1 = hashlib.sha1()
    try:
        with open(file_path, 'rb') as file:
            while True:
                data = file.read(8192)  # Read in chunks to handle large files
                if not data:
                    break
                sha1.update(data)
        return sha1.hexdigest()
    except FileNotFoundError:
        return "File not found."

# 使用示例
file_path = r'C:\Users\12258\Desktop\xxx.json'  # 替换为您的文件路径
sha1_hash = calculate_sha1(file_path)
print("SHA-1 Hash:", sha1_hash)

 如此,数据集的准备工作就完成了。

微调过程

首先选择想要微调的模型,然后默认模型路径,这样无需额外操作,在之后启动训练时,就会自动下载模型相关文件至本地。

ollama下载的模型能通过llamafactory训练吗,llama

 选择自己的数据集,并可以通过预览数据集查看自己的数据内容。

ollama下载的模型能通过llamafactory训练吗,llama

ollama下载的模型能通过llamafactory训练吗,llama

ollama下载的模型能通过llamafactory训练吗,llama

如此点击最下方“开始”按键后,模型就会开始进行微调训练。底部会有日志刷新并可视化loss曲线,直至训练结束。

模型导出

导出需要注意,只能先导出全精度版本模型,然后再导出量化版本模型,具体操作如下:

1.全精度导出

“模型路径”:不用改动,默认是刚才选择模型后自动生成的那个路径。

“适配器路径”:选择刚才训练结束生成的保存文件。

“最大分块大小”:按自己喜好选择大小。

“导出量化等级”:此阶段选择none,否则无法成功导出。

“导出目录”:填写全精度模型导出的目标路径。

ollama下载的模型能通过llamafactory训练吗,llama

点击“开始导出”后,模型开始导出。

2.量化导出

“模型路径”:需要改成路径2,也就是上一步全精度模型导出文件的路径。

“适配器路径”:取消选择

“导出量化等级”:选择想要的等级。

“导出路径”:填写新的量化模型导出的目标路径

ollama下载的模型能通过llamafactory训练吗,llama

如此便可顺利导出量化模型,导出后的模型文件为safetensors格式,图示如下,两个文件夹,上方为全精度模型,下方为量化模型:

ollama下载的模型能通过llamafactory训练吗,llama

微调模型转化格式并量化

ollama不支持直接导入safetensors格式的模型文件,所以需要使用ollama的量化工具将模型文件进行转化,我这里直接使用了ollama/quantize的docker工具,一行命令行即可调用实现,非常方便,命令如下:

docker run --rm -v /path/to/model/repo:/repo ollama/quantize -q q4_0 /repo

 “/path/to/model/repo”:替换成自己的模型文件路径即可。

q4_0”:设置为自己想要的量化精度。

建议量化上文llama_factory导出的全精度模型,因为ollama/quantize除了会将模型文件转化成一个指定量化等级的模型文件还会生成一个无量化的全精度模型文件,如下图所示:

ollama下载的模型能通过llamafactory训练吗,llama

微调模型导入ollama

本人使用的是ollama docker,不保证其他方式的ollama也可同样操作,ollama github中对于模型导入写的很详细,具体请查阅github。

完成以上步骤后,我们就可以直接从ollama github教程中的第三步“Write a Modefile”继续进行。

首先要创建一个“Modelfile”文件,按照模板在其中填入导入模型的相应信息,官方模板如下:

FROM llama2
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096

# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.

 最重要的还是第一行,指定模型文件的存储路径。如果ollama中已经pull过与微调模型同类型的模型(比如我微调的模型是zephyr,而我之前在ollama中已经用过zephyr),那可以直接使用

ollama show --modelfile zephyr

 命令查阅该模型官方的Modelfile配置详情,然后直接复制到自己微调模型Modelfile配置中即可。

最终我的Modelfile配置如下,除了第一行是模型文件路径,后面内容都是直接复制官方配置:

FROM /root/.ollama/models/blobs/zephyr_q4_0.bin
TEMPLATE """{{- if .System }}
<|system|>
{{ .System }}
</s>
{{- end }}
<|user|>
{{ .Prompt }}
</s>
<|assistant|>
"""
PARAMETER stop "<|system|>"
PARAMETER stop "<|user|>"
PARAMETER stop "<|assistant|>"
PARAMETER stop "</s>

 保存文件之后,执行如下命令,就完成了ollama的自定义微调模型导入:

ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>'

 使用如下命令进行测试,如果成功运行,代表模型导入成功:

ollama run choose-a-model-name

参考

从零开始的LLaMA-Factory的指令增量微调_llama-factory和llama有什么关系-CSDN博客

单卡 3 小时训练专属大模型 Agent:基于 LLaMA Factory 实战 - 知乎

使用LLaMA Factory对大型语言模型进行微调 - 知乎

GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs

https://hub.docker.com/r/ollama/quantize

Ollama教程——模型:如何将模型高效导入到ollama框架_ollama模型学习-CSDN博客

ollama/docs/import.md at main · ollama/ollama · GitHub文章来源地址https://www.toymoban.com/news/detail-859114.html

到了这里,关于自定义数据集使用llama_factory微调模型并导入ollama的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用LLaMA-Factory微调ChatGLM3

    略 (1)下载LLaMA-Factory https://github.com/hiyouga/LLaMA-Factory (2)安装依赖 (3)启动LLaMA-Factory的web页面 得到如下页面: 设置如下参数,点击开始即可: 点击“预览命令”,可以看到要执行的python脚本,如下所示:

    2024年02月03日
    浏览(31)
  • llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署

    文章列表: llama-factory SFT系列教程 (一),大模型 API 部署与使用 llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署 llama-factory SFT系列教程 (三),chatglm3-6B 命名实体识别实战 模型名 模型大小 默认模块 Template Baichuan2 7B/13B W_pack baichuan2 BLOOM 560M/1.1B/1.7B/3B/7.1B/176

    2024年04月25日
    浏览(26)
  • LLaMA Factory+ModelScope实战——使用 Web UI 进行监督微调

    文章原始地址:https://onlyar.site/2024/01/14/NLP-LLaMA-Factory-web-tuning/ 大语言模型微调一直都是一个棘手的问题,不仅因为需要大量的计算资源,而且微调的方法也很多。在尝试每种方法过程中,配置环境和第三方库也颇为麻烦。。而 LLaMA Factory 1 是一个高效的大语言模型训练和推理

    2024年04月10日
    浏览(52)
  • 【本地大模型部署与微调】ChatGLM3-6b、m3e、one-api、Fastgpt、LLaMA-Factory

    本文档详细介绍了使用ChatGLM3-6b大模型、m3e向量模型、one-api接口管理以及Fastgpt的知识库,成功的在本地搭建了一个大模型。此外,还利用LLaMA-Factory进行了大模型的微调。 1.ChatGLM3-6b 2.m3e 3.One-API 4.Fastgpt 5.LLaMA-Factory 1.1创建腾讯云服务器 注意: ChatGLM3-6b的大模型40多个G,购买腾讯

    2024年03月22日
    浏览(36)
  • llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理

    llama-factory SFT系列教程 (一),大模型 API 部署与使用 llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署 llama-factory SFT系列教程 (三),chatglm3-6B 命名实体识别实战 llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理 llama-factory 提供了 vllm API 部署,但笔

    2024年04月27日
    浏览(27)
  • Llama3-8B+ LLaMA-Factory 中文微调

    Llama3是目前开源大模型中最优秀的模型之一,但是原生的Llama3模型训练的中文语料占比非常低,因此在中文的表现方便略微欠佳! 本教程就以Llama3-8B-Instruct开源模型为模型基座,通过开源程序LLaMA-Factory来进行中文的微调,提高Llama3的中文能力!LLaMA-Factory是一个开源的模型训

    2024年04月27日
    浏览(36)
  • LLaMA Factory单机微调的实战教程

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年04月26日
    浏览(24)
  • LLaMA Factory多卡微调的实战教程

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年04月28日
    浏览(25)
  • Llama-Factory的baichuan2微调

    Llama-Factory:https://github.com/hiyouga/LLaMA-Factory/tree/main 请使用   来启用 QLoRA 训练。 (1)奖励模型训练 (2)PPO训练(PPO训练需要先进行上一步RM的训练,然后导入微调后模型和RM进行训练输出)        大规模无监督语言模型(LMs)虽然可以学习广泛的世界知识和一些推理技能

    2024年02月05日
    浏览(33)
  • Koala:加州大学BAIR团队使用ChatGPT蒸馏数据和公开数据集微调LLaMA模型得到

    自从Meta发布LLaMA以来,围绕它开发的模型与日俱增,比如Alpaca、llama.cpp、ChatLLaMA以及Vicuna等等,相关的博客可以参考如下: 【Alpaca】斯坦福发布了一个由LLaMA 7B微调的模型Alpaca(羊驼),训练3小时,性能比肩GPT-3.5 【llama.cpp】量化130亿参数LLaMA模型的llama.cpp,推理仅需4GB内存

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包