从头开始微调Llama 3.1模型

image.png

在今天的科技专栏中,我们将深入探讨如何微调Llama 3.1模型,以使其更好地适应您的特定领域数据。微调大型语言模型(如Llama)的主要目的是为了在特定领域的数据上表现更好,从而生成更符合您需求的输出。以下是我们将要介绍的五个主要步骤:

  1. 安装必要的软件包
  2. 准备数据集
  3. 训练模型
  4. 进行推理
  5. 保存模型

第一步:安装必要的软件包

首先,我们需要安装一些必要的软件包unsloth和torch,我们将使用它来训练模型,以及acceleratebitsandbytes等其他工具。值得一提的是,我们使用的是Google Colab提供的免费T4 GPU,这意味着您可以在无需花费任何费用的情况下训练您的模型,这无疑是一个很棒的功能。

!pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
!pip install --no-deps "trl<0.9.0" peft accelerate bitsandbytes

第二步:准备数据集

在这一部分,我们将加载并准备我们的Llama 3.1模型。首先,我们需要导入必要的软件包,如UNS slothtorch,并设置最大序列长度、数据类型等参数。

import unsloth import FastLanguageModel
import torchmax_sequence_length = 2048
dtype = None
load_in_4bit = True

接下来,我们将从UNS sloth加载模型,并使用Laura技术来只更新1%到10%的参数。这样做的好处是能够更高效地进行训练。

model,tokenizer = FastLanguageModel.from_pretrained(model_name="unsloth/Meta-Llama-3.1-8B",max_seq_length = max_sequence_length ,dtype = dtype,load_in_4bit = load_in_4bit
)

第三步:训练模型

现在我们已经准备好了数据集,可以开始训练模型了。在这一步中,我们将配置训练参数,并使用Alpaca数据集来进行训练。

from datasets import load_datasetdata = load_dataset('alpaca', split='train')
data = data.rename_column('output', 'response')

接下来,我们将配置训练参数,并开始训练模型。

from transformers import Trainer, TrainingArgumentstraining_args = TrainingArguments(output_dir='./results',num_train_epochs=3,per_device_train_batch_size=8,save_steps=10_000,save_total_limit=2,
)trainer = Trainer(model=model,args=training_args,train_dataset=data,
)trainer.train()

训练完成后,我们可以查看训练的内存和时间统计信息。

print(trainer.state.log_history)

第四步:进行推理

训练完成后,我们可以进行推理。首先,我们需要加载模型并对输入进行标记化处理。然后,我们将生成模型的输出。

from transformers import pipelineinference_pipeline = pipeline('text-generation', model=model)
input_text = "请介绍一下Llama 3.1模型的应用场景。"
outputs = inference_pipeline(input_text)for i, output in enumerate(outputs):print(f"Output {i+1}: {output['generated_text']}")

此外,我们还可以使用Hugging Face的新功能——TextStreamer进行实时流式输出,这样我们就无需等待最终结果。

from transformers import TextStreamerstreamer = TextStreamer(model=model)
input_text = "请介绍一下Llama 3.1模型的应用场景。"
streamer(input_text)

第五步:保存模型

最后,我们需要保存已经训练好的模型。最好的方法是将其推送到Hugging Face Hub,这样就可以随时访问和使用模型。

model.save_pretrained('path_to_your_model')
tokenizer.save_pretrained('path_to_your_tokenizer')from huggingface_hub import HfApiapi = HfApi()
api.upload_folder(folder_path='path_to_your_model',path_in_repo='your_repo_name',repo_id='your_username/your_repo_name',token='your_huggingface_token'

如果您希望以不同的格式(如16位、4位或更低的适配器)保存模型,也可以进行相应的配置。

总结

通过以上五个步骤,我们已经完成了Llama 3.1模型的微调。从安装必要的软件包到准备数据集,再到训练模型、进行推理,最后是保存模型,每一步都至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot知识笔记

一、基本概念 1.1 特性 起步依赖 自动配置 其它特性:内嵌的Tomcat、Jetty(无需部署WAR文件),外部配置,不需要XML配置(properties/yml)。 1.2 配置文件 SpringBoot提供了多种属性配置方式 //application.properties server.port=9090 server.servlet.context-path…

Python爬虫知识体系-----Urllib库的使用

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新&#xff1a;https://blog.csdn.net/grd_java/article/details/140574349 文章目录 1. 基本使用2. 请求对象的定制3. 编解码1. get请求方式&#xff1a;urllib.parse.quote&#xff08;&#xff09;2. ur…

邦布带你从零开始实现图书管理系统(java版)

今天我们来从零开始实现图书管理系统。 图书管理系统 来看我们的具体的实现&#xff0c;上述视频。 我们首先来实现框架&#xff0c;我们要实现图书管理系统&#xff0c;首先要搭框架。 我们首先定义一个书包&#xff0c;在书包中定义一个书类和一个书架类&#xff0c;再定义…

用Java手写jvm之实现查找class

写在前面 完成类加载器加载class的三阶段&#xff0c;加载&#xff0c;解析&#xff0c;初始化中的加载&#x1f600;&#x1f600;&#x1f600; 源码 。 jvm想要运行class&#xff0c;是根据类全限定名称来从特定的位置基于类加载器来查找的&#xff0c;分别如下&#xff1a;…

【SQL 新手教程 2/20】关系模型 -- 主键

&#x1f497; 关系数据库建立在关系模型上⭐ 关系模型本质上就是若干个存储数据的二维表 记录 (Record)&#xff1a; 表的每一行称为记录&#xff08;Record&#xff09;&#xff0c;记录是一个逻辑意义上的数据 字段 (Column)&#xff1a;表的每一列称为字段&#xff08;Colu…

吴恩达的TranslationAgent学习

TranslationAgent构成 整个[TranslationAgent (github.com)]在流程上分为短文本的一次性翻译和长文本的分chunk翻译&#xff08;按照Token进行划分&#xff09;。 但是不论长文本翻译还是短文本翻译&#xff0c;总体流程遵循执行、纠正再执行的逻辑循环实现。 这种按照自省思路…

【数字IC/FPGA】使用Verdi对比两个波形

步骤一&#xff1a; 使用verdi打开第一个波形 bsub verdi -ssf 1.fsdb添加需要观察的信号&#xff0c;如下图所示&#xff1a; 步骤二&#xff1a; 新建容器&#xff0c;依次点击Window --> Dock to --> New Container Window。 然后输入容器的名字&#xff0c;如下图所…

SQL数据库:通过在视频监控平台服务器上直接使用SQL存储过程,在海量记录中查询特定时间段内-某个摄像头的所有视频片段

目录 一、背景 1、存储过程 2、视频监控系统 二、需求和数据表 1、具体要求 2、数据表 3、部分数据 三、实现 1、目标 2、创建存储过程 &#xff08;1&#xff09;存储过程代码 &#xff08;2&#xff09;创建成功 3、存储过程的解释 4、SQL命令调用方式 5、调用…

Java----队列(Queue)

目录 1.队列&#xff08;Queue&#xff09; 1.1概念 1.2队列的使用 1.3队列的模拟实现 1.4循环队列 1.4.1循环队列下标偏移 1.4.2如何区分队列是空还是满 1.5双端队列 (Deque) 1.队列&#xff08;Queue&#xff09; 1.1概念 队列&#xff1a;只允许在一端进行插入数据…

Linux Redhat ens33不显示IP问题

优质博文&#xff1a;IT-BLOG-CN 【第一步】&#xff1a;查看系统网卡设备 : ip addr show 【第二步】&#xff1a;修改网卡配置参数 cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 修改ONBOOT参数为yes 【第三步】&#xff1a;重启网卡&#xff0c;然后ping检测…

奇怪的Excel单元格字体颜色格式

使用VBA代码修改单元格全部字符字体颜色是个很简单的任务&#xff0c;例如设置A1单元格字体颜色为红色。 Range("A1").Font.Color RGB(255, 0, 0)有时需要修改部分字符的颜色&#xff0c;如下图所示&#xff0c;将红色字符字体颜色修改为蓝色。代码将会稍许复杂&am…

Linux:Linux进程控制

目录 1. 进程概念 1.1 并行和并发 2. 进程创建 2.1 fork()函数初识 2.2 写时拷贝 2.3 fork常规用法 2.4 fork调用失败的原因 3. 进程终止 3.1 进程场景 3.2 进程常见退出方法 4. 进程等待 4.1 进程等待必要性 4.2 进程等待的方法 4.2.1 wait方法&#xff1a; 4.…

2024年起重信号司索工(建筑特殊工种)证模拟考试题库及起重信号司索工(建筑特殊工种)理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年起重信号司索工(建筑特殊工种)证模拟考试题库及起重信号司索工(建筑特殊工种)理论考试试题是由安全生产模拟考试一点通提供&#xff0c;起重信号司索工(建筑特殊工种)证模拟考试题库是根据起重信号司索工(建筑特…

2.9.GoogLeNet

GoogLeNet ​ 主要解决了什么样大小的卷积核是最合适的&#xff1a;有时使用不同大小的卷积核组合是有利的 1.Inception块 ​ Inception块由四条并行路径组成。 前三条路径使用窗口大小为11、33和55的卷积层&#xff0c;从不同空间大小中提取信息。 ​ 中间的两条路径在输入…

谷粒商城实战-58-商品服务-API-三级分类-删除-批量删除小结

文章目录 一&#xff0c;增加一个批量删除的按钮并绑定事件二&#xff0c;全栈工程师三&#xff0c;逆向工程在全栈开发中的应用提升效率的方式&#xff1a;使用案例&#xff1a; 这一节的主要内容是开发批量删除分类的功能。 一&#xff0c;增加一个批量删除的按钮并绑定事件 …

zh echarts样式

记录一下&#xff1a; 一个图的配置 在echarts官网demo界面 option {title: {text: },legend: {data: [xxx前, xxx后]},radar: {// shape: circle,name: {// 雷达图各类别名称文本颜色textStyle: {color: #000,fontSize: 16}},indicator: [{ name: 完整性, max: 1 },{ name:…

【无标题】shell脚本的基本命令+编写shell脚本

shell脚本 一.shell基础 1.shell概念 2.shell脚本 3.shell脚本编写注意事项 二.编写shell脚本 1.编写一个helloworld脚本&#xff0c;运行脚本 [rootshell ~]# vim helloworld.sh #!/bin/bash //声明 echo "hello world!" ls -lh /etc/ 运行脚本(四种方式)&…

C语言字符函数与字符串函数超详解

文章目录 前言1. 字符分类函数2. 字符转换函数3. strlen3. 1 strlen 的使用3. 2 strlen 的模拟实现 4. strcpy4. 1 strcpy 的使用4. 2 strcpy 的模拟实现 5. strcat5. 1 strcat 的使用5. 2 strcat 的模拟实现 6. strcmp6. 1 strcmp 的使用6. 2 strcmp 的模拟实现 7. strncpy 函…

VI/VIM编辑器及三种模式

目录 1. 三种模式 2. 使用 VIM 3. i/ a/ o 进入输入模式 VI/VIM是 visual interface 的缩写是 Linux 中最经典的文本编辑器&#xff1b; VIM是 VI 的增强版本&#xff0c;兼容 VI 的所有指令&#xff0c;不仅能够编辑文本&#xff0c;还具有 shell 程序编辑的功能&#xff…

maven引入了jar包但在class文件里找不到jar包里的类

在工作当中遇到的这个问题&#xff0c;别人引入的jar包&#xff0c;我代码里报错 maven clean 和 maven install 都不管用 检查过了pom文件 检查了maven仓库路径下是否有这个cn.hutool的jar包 都没有找到问题 最终解决办法是手动引入 步骤一&#xff1a;点击左上角file->…