目录
学习目标
目录
为什么要一种微型语言模型?
如何使用Lamini微调开源LLM?
数据准备
标记数据集
微调过程
设置环境
加载数据集
设置型号,培训配置和令牌器
设置培训进行微调,模型
结论
关键要点
常见问题
首页 科技周边 人工智能 使用Lamini-Analytics Vidhya微调开源LLM

使用Lamini-Analytics Vidhya微调开源LLM

Apr 12, 2025 am 10:20 AM

最近,随着大语言模型和AI的兴起,我们看到了自然语言处理方面的无数进步。文本,代码和图像/视频生成等域中的模型具有归档的人类的推理和性能。这些模型在基于知识的问题中表现出色。 GPT-4O,Llama 2,Claude和Gemini之类的模型在公开可用的数据集上进行了培训。他们未能回答可能对各种组织任务更有用的领域或特定于主题的问题。

微观调整可帮助开发人员和企业适应并训练预培训的模型,以适用于特定于域的数据集,该数据集对与域相关的查询进行了高度准确性和相干性。微调可以增强模型的性能,而无需大量的计算资源,因为预训练的模型已经从广泛的公共数据中学到了一般文本。

该博客将研究为什么我们必须使用Lamini平台微调预训练的模型。这使我们可以在不使用大量计算资源的情况下微调和评估模型。

所以,让我们开始吧!

学习目标

  • 探索使用tofine-tune开源LLM的需求
  • 找出使用拉米尼的使用以及在微调模型上的指示下
  • 为了动手了解微调模型的端到端过程。

本文作为Thedata Science Blogathon的一部分发表。

使用Lamini-Analytics Vidhya微调开源LLM

目录

  • 学习目标
  • 为什么要一种微型语言模型?
  • 如何使用Lamini微调开源LLM?
    • 数据准备
    • 标记数据集
    • 微调过程
    • 设置环境
    • 加载数据集
    • 设置培训进行微调,模型
  • 结论
  • 常见问题

为什么要一种微型语言模型?

预先训练的模型主要是对庞大的一般数据进行培训的,并且很有可能缺乏上下文或特定领域知识。预训练的模型也可能导致幻觉以及不准确和不连贯的输出。最受欢迎的大型语言模型基于聊天机器人,例如Chatgpt,Gemini和Bingchat,它反复表明,预训练的模型容易出现这种不准确性。这是救援进行微调的地方,这可以有助于有效地适应特定于主题的任务和问题。将模型与您的目标保持一致的其他方法包括及时的工程和少量及时工程。

尽管如此,在性能指标方面,微调仍然表现优于表现。诸如参数有效的微调和低自适应排名诸如诸如模型的微调和低自适应排名的方法之类的方法进一步改进了模型,并帮助开发人员生成了更好的模型。让我们看一下微调在大型语言模型上下文中的适合程度。

 #加载微调数据集
文件名=“ lamini_docs.json”
conterction_dataset_df = pd.read_json(文件名,lines = true)
指令_dataset_df

#将其加载到Python的词典中
示例=指令_dataset_df.to_dict()

#准备样品以进行微调 
如果在示例中“问题”和示例中的“答案”:
  text =示例[“问题”] [0]示例[“答案”] [0]
示例中的elif“指示”和“响应”示例:
  text =示例[“指令”] [0]示例[“响应”] [0]
示例中的elif“输入”和示例中的“输出”:
  text =示例[“输入”] [0]示例[“输出”] [0]
别的:
  text =示例[“ text”] [0]

#使用提示模板创建指令调谐数据集进行微调
提示_template_qa =“” ###问题:
{问题}

### 回答:
{回答}”””
登录后复制

上面的代码显示,指令调整使用提示模板来准备数据集进行指令调整并微调特定数据集的模型。我们可以使用此类自定义数据集将预训练的模型调整为特定的用例。

下一节将研究Lamini如何为自定义数据集提供微型语言模型(LLM)。

如何使用Lamini微调开源LLM?

Lamini平台使用户可以无缝地进行微调和部署模型,而无需太多的成本和硬件设置要求。 Lamini提供了一个端到端的堆栈,可在用户方便和模型要求下开发,训练,调整,E和部署模型。 Lamini提供了自己的托管GPU计算网络,以经济有效地培训模型。

使用Lamini-Analytics Vidhya微调开源LLM

Lamini内存调整工具和计算优化有助于训练和调整模型,同时控制成本。模型可以在任何地方,私有云或通过Lamini的GPU网络托管。接下来,我们将看到一份逐步指南,使用Lamini平台准备数据以微调大语言模型(LLMS)。

数据准备

通常,我们需要选择一个特定领域的数据集进行数据清洁,促销,令牌化和存储,以准备任何微调任务的数据。加载数据集后,我们将其进行预处理以将其转换为指令调整的数据集。我们将每个样本从数据集格式化为指令,问和答案格式,以更好地为我们的用例微调。使用此处给出的链接查看数据集的来源。让我们看一下使用Lamini平台进行训练的代币化调整的代码示例说明。

导入大熊猫作为pd

#加载数据集并将其作为指令数据集存储
文件名=“ lamini_docs.json”
conterction_dataset_df = pd.read_json(文件名,lines = true)
示例=指令_dataset_df.to_dict()

如果在示例中“问题”和示例中的“答案”:
  text =示例[“问题”] [0]示例[“答案”] [0]
示例中的elif“指示”和“响应”示例:
  text =示例[“指令”] [0]示例[“响应”] [0]
示例中的elif“输入”和示例中的“输出”:
  text =示例[“输入”] [0]示例[“输出”] [0]
别的:
  text =示例[“ text”] [0]

提示_template =“” ###问题:
{问题}

### 回答:”””

#存储微调示例作为指令格式
num_examples = len(示例[“问题”])
finetuning_dataset = []
对于我的范围(num_examples):
  问题=示例[“问题”] [i]
  答案=示例[“答案”] [i]
  text_with_prompt_template = strump_template.format(Question = Question)
  finetuning_dataset.append({“问题”:text_with_prompt_template, 
                             “答案”:答案})
登录后复制

在上面的示例中,我们在及时的模板中格式化了“问题”和“答案”,并将它们存储在训练LLM之前的单独文件中以进行令牌化和填充。

标记数据集

#带有填充和截断的数据集的象征化
def tokenize_function(示例):
    如果在示例中“问题”和示例中的“答案”:
      text =示例[“问题”] [0]示例[“答案”] [0]
    示例中的elif“输入”和示例中的“输出”:
      text =示例[“输入”] [0]示例[“输出”] [0]
    别的:
      text =示例[“ text”] [0]
    
    #填充
    tokenizer.pad_token = tokenizer.eos_token
    tokenized_inputs = tokenizer(
        文本,
        return_tensors =“ np”,
        填充= true,
    )

    max_length = min(min
        tokenized_inputs [“ input_ids”]。形状[1],
        2048
    )
    #文本的截断
    tokenizer.truncation_side =“左”
    tokenized_inputs = tokenizer(
        文本,
        return_tensors =“ np”,
        截断= true,
        max_length = max_length
    )

    返回tokenized_inputs
登录后复制

上面的代码将数据集样本作为填充和截断的输入,并使用令牌化来生成预处理的令牌化数据集样本,可用于微调预培训的模型。现在,数据集已经准备好了,我们将使用Lamini平台研究模型的培训和评估。

微调过程

现在,我们已经有一个以指令调整格式准备的数据集,我们将使用Lamini的易于使用的培训技巧将数据集加载到环境中,并对预训练的LLM模型进行微调。

使用Lamini-Analytics Vidhya微调开源LLM

设置环境

为了开始使用Lamini进行微调开放式旅行,我们必须首先确保我们的代码环境安装了合适的资源和库。我们必须确保您拥有具有足够GPU资源的合适机器,并安装必要的库,例如变形金刚,数据集,火炬和熊猫。您必须安全地加载环境变量,例如API_URL和API_KEY,通常来自环境文件。您可以使用Dotenv之类的软件包来加载这些变量。准备环境后,加载数据集和培训模型。

导入操作系统
来自拉米尼进口兰米尼

lamini.api_url = os.getEnv(“ powerml__production__url”)
lamini.api_key = os.getEnv(“ powerml__production __key”)

#导入必要的库并加载环境文件
导入数据集
导入tempfile
导入记录
导入随机
导入config
导入操作系统
导入山药
进口时间
导入火炬
导入变压器
导入大熊猫作为pd
导入jsonlines

#加载变压器体系结构和[[
从公用事业导入 *
从变形金刚导入自动源
从变形金刚导入AutomoDelforCausAllm
从变形金刚进口培训
从变形金刚导入AutomoDelforCausAllm
来自Llama Import Basic Modelrunner

logger = logging.getLogger(__名称__)
global_config =无
登录后复制

加载数据集

设置监视和调试的日志记录后,请使用数据集或其他数据处理库(例如JSONLINES和PAN​​DAS)准备数据集。加载数据集后,我们将设置一个用于培训过程的培训配置的令牌和模型。

 #从您的本地系统或HF云中加载数据集
dataset_name =“ lamini_docs.jsonl”
dataset_path = f“/content/{dataset_name}”
use_hf = false

#数据集路径
dataset_path =“ lamini/lamini_docs”
登录后复制

设置型号,培训配置和令牌器

接下来,我们选择使用lamlamini,“ eleutherai/pythia-70m”进行微调开放式的模型,并在triagn_config下定义其配置,指定预训练的模型名称和数据集路径。我们使用模型的令牌将自动摄影剂初始化,并将填充设置为序列令牌。然后,我们使用自定义功能Tokenize_and_split_data将数据归为数据并将其分为培训和测试数据集。最后,我们使用AutoModelForCausAllm实例化基础模型,使其能够执行因果语言建模任务。此外,以下代码设置了我们的模型微调过程的计算要求。

 #模型名称
model_name =“ eleutherai/pythia-70m”

#培训配置
triending_config = {
    “模型”: {
        “ Pretrained_name”:model_name,
        “ max_length”:2048
    },,
    “数据集”:{
        “ use_hf”:use_hf,
        “路径”:dataset_path
    },,
    “冗长”:是的
}

#设置自动令牌
tokenizer = autotokenizer.from_pretaining(model_name)
tokenizer.pad_token = tokenizer.eos_token
train_dataset,test_dataset = tokenize_and_split_data(triending_config,tokenizer)

#从Lamini设置基线型号
base_model = lamini(model_name)

#GPU排位
device_count = torch.cuda.device_count()
如果device_count> 0:
    logger.debug(“选择GPU设备”)
    设备= TORCH.DEVICE(“ CUDA”)
别的:
    logger.debug(“选择CPU设备”)
    设备= TORCH.DEVICE(“ CPU”)
登录后复制

设置培训进行微调,模型

最后,我们使用超参数设置培训参数参数。它包括学习率,时期,批处理大小,输出目录,评估步骤,SAV,热身步骤,评估和记录策略等,以微调自定义培训数据集。

 max_steps = 3

#受过训练的型号名称
Trained_model_name = f“ lamini_docs_ {max_steps} _steps”
output_dir = trained_model_name

triending_args = triencharguments(
  #学习率
  Learning_rate = 1.0e-5,
  #训练时期的数量
  num_train_epochs = 1,

  #最大训练步骤(每个步骤都是一批数据)
  #覆盖num_train_epochs,如果不是-1
  max_steps = max_steps,

  #培训的批量尺寸
  per_device_train_batch_size = 1,

  #要保存模型检查点的目录
  output_dir = output_dir,

  #其他参数
  operwrite_output_dir = false,#覆盖输出目录的内容
  disable_tqdm = false,#禁用进度栏
  eval_steps = 120,#两个评估之间的更新步骤数
  save_steps = 120,#在保存#步骤模型之后
  热身_STEPS = 1,#学习率调度程序的热身步骤数
  per_device_eval_batch_size = 1,#批次大小进行评估
  evaluation_strategy =“ step”,
  logging_strategy =“ step”,
  logging_steps = 1,
  optim =“ adafactor”,
  gradient_accumulation_steps = 4,
  gradient_checkpointing = false,

  #早期停止的参数
  load_best_model_at_end = true,
  save_total_limit = 1,
  metric_for_best_model =“ eval_loss”,
  大_is_better = false
)
登录后复制

设置训练参数后,系统根据输入大小和梯度累积步骤计算模型每秒的浮点操作(FLOPS)。从而深入了解计算负载。它还评估记忆使用情况,估计模型在千兆字节中的占地面积。一旦完成这些计算,培训师将初始化基本模型,失败,总培训步骤以及准备好的培训和评估数据集。该设置优化了训练过程并启用资源利用率监控,对于有效处理大规模模型微调至关重要。在培训结束时,微型模型准备在云上部署,以将用户作为API服务。

 #模型参数
model_flops =((
  base_model.floating_point_ops(
    {
       “ input_ids”:torch.zeros(
           (1,triending_config [“模型”] [“ max_length”])
      )
    }
  )
  *训练_args.gradient_accumulation_steps
)

打印(base_model)
print(“内存足迹”,base_model.get_memory_footprint() / 1E9,“ GB”)
打印(“ Flops”,model_flops / 1e9,“ gflops”)

#设立教练
培训师=教练(
    型号= base_model,
    model_flops = model_flops,
    total_steps = max_steps,
    args =训练_args,
    train_dataset = train_dataset,
    eval_dataset = test_dataset,
)
登录后复制

结论

总之,本文提供了深入的指南,以了解使用Lamini平台微调LLM的需求。它全面概述了为什么我们必须为自定义数据集和业务用例以及使用Lamini工具的好处微调模型。我们还看到了使用Lamini的工具使用自定义数据集和LLM微调模型的分步指南。让我们总结一下博客的关键要点。

关键要点

  1. 针对迅速工程和检索增强生成方法的微调模型需要学习。
  2. 诸如Lamini之类的平台的Uutilization for易用使用的硬件设置和部署技术,以满足用户需求的微调模型
  3. 我们正在为微调任务准备数据,并设置管道使用各种超参数训练基本模型。

探索GitHub上本文背后的代码。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

常见问题

Q1。如何微调我的模型?

答:微调过程始于理解特定于上下文的要求,数据集准备,代币化以及设置培训设置,例如硬件要求,培训配置和培训参数。最终,进行模型开发的培训工作。

Q2。 LLM的微调是什么意思?

答:对LLM进行微调意味着在特定自定义数据集上训练基本模型。每个用例都会为特定查询生成准确且相关的输出。

Q3。 LLM微调中的Lamini是什么?

A. Lamini为LLMS的无缝,高效且具有成本效益的开发提供了综合语言模型,推理和GPU设置。

以上是使用Lamini-Analytics Vidhya微调开源LLM的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
如何使用AGNO框架构建多模式AI代理? 如何使用AGNO框架构建多模式AI代理? Apr 23, 2025 am 11:30 AM

在从事代理AI时,开发人员经常发现自己在速度,灵活性和资源效率之间进行权衡。我一直在探索代理AI框架,并遇到了Agno(以前是Phi-

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑 OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑 Apr 16, 2025 am 11:37 AM

该版本包括三种不同的型号,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,标志着向大语言模型景观内的特定任务优化迈进。这些模型并未立即替换诸如

超越骆驼戏:大型语言模型的4个新基准 超越骆驼戏:大型语言模型的4个新基准 Apr 14, 2025 am 11:09 AM

陷入困境的基准:骆驼案例研究 2025年4月上旬,梅塔(Meta)揭开了Llama 4套件的模特套件,具有令人印象深刻的性能指标,使他们对GPT-4O和Claude 3.5 Sonnet等竞争对手有利地定位。伦斯的中心

Andrew Ng的新简短课程 Andrew Ng的新简短课程 Apr 15, 2025 am 11:32 AM

解锁嵌入模型的力量:深入研究安德鲁·NG的新课程 想象一个未来,机器可以完全准确地理解和回答您的问题。 这不是科幻小说;多亏了AI的进步,它已成为R

多动症游戏,健康工具和AI聊天机器人如何改变全球健康 多动症游戏,健康工具和AI聊天机器人如何改变全球健康 Apr 14, 2025 am 11:27 AM

视频游戏可以缓解焦虑,建立焦点或支持多动症的孩子吗? 随着医疗保健在全球范围内挑战,尤其是在青年中的挑战,创新者正在转向一种不太可能的工具:视频游戏。现在是世界上最大的娱乐印度河之一

火箭发射模拟和分析使用Rocketpy -Analytics Vidhya 火箭发射模拟和分析使用Rocketpy -Analytics Vidhya Apr 19, 2025 am 11:12 AM

模拟火箭发射的火箭发射:综合指南 本文指导您使用强大的Python库Rocketpy模拟高功率火箭发射。 我们将介绍从定义火箭组件到分析模拟的所有内容

Google揭示了下一个2025年云上最全面的代理策略 Google揭示了下一个2025年云上最全面的代理策略 Apr 15, 2025 am 11:14 AM

双子座是Google AI策略的基础 双子座是Google AI代理策略的基石,它利用其先进的多模式功能来处理和生成跨文本,图像,音频,视频和代码的响应。由DeepM开发

See all articles