
奥本 AI 将所有的最新 AI 聚合到了一起,为您开启多模型 AI 绘画新时代!
扫码即刻关注公众号
LLaMA 3 财务问答的微调:Neptune AI 监控指南
7 个月前
LLaMA 3金融问答微调:Neptune AI监控指南
通过使用Neptune AI监控在Finance Alpaca数据集上微调LLaMA 3,增强你的金融分析能力。 ------------------------------------------------------------------------------------------------------source金融问答系统的基础 ====================
金融问答系统旨在为广泛的与金融相关的问题提供准确和及时的答案。这些问题可以从简单的股票价格查询到复杂的市场趋势、风险评估和投资策略询问不等。传统系统通常依赖于基于规则的方法或基本的机器学习技术,这些方法在应对金融语言的细微差别和复杂性时往往面临困难。
传统方法及其局限性
历史上,金融问答系统依赖于基于规则的方法和基本的机器学习技术的结合。虽然这些方法在很多年里为行业服务,但它们在多个关键挑战上往往捉襟见肘:
- 金融语言的复杂性:金融术语和概念可能高度细致且依赖于上下文,使传统系统难以准确解释和回应查询。
- 快速市场变化:金融世界是动态的,市场条件和规定不断演变。传统系统可能难以跟上这些变化,提供最新的信息。
-
处理非结构化数据:相当大一部分金融信息以非结构化数据的形式出现Finance Alpaca数据集是一个全面的金融问题和答案的集合,涵盖了广泛的主题,包括:
-
股市分析
- 公司财务
- 投资策略
- 经济指标
- 财务法规
使用金融阿尔帕卡进行微调的好处
在金融阿尔帕卡数据集上微调LLaMA 3提供了几个优势:
- 领域特定知识:通过在金融阿尔帕卡上进行训练,LLaMA 3能够获得对金融概念和术语的深刻专业知识。
- 提高准确性:该模型学习提供对与金融相关的查询更为准确和相关的回应。
- 增强上下文理解:金融阿尔帕卡帮助模型理解特定的上下文,在这些上下文中某些金融术语和概念被使用。
- 真实的问答模式:数据集让模型接触到典型的金融问答模式,提高了其进行自然流利的金融对话的能力。
该数据集为微调LLaMA 3提供了理想基础,从而创建一个能够高准确度处理复杂金融查询的专业财务助手。
海王星AI:监控和优化 =======================================Neptune AI你正在接受的数据训练到2023年10月。
Neptune AI 是一个强大的元数据存储和实验跟踪工具,旨在帮助数据科学家和机器学习工程师有效管理他们的实验。其关键特性包括:
- 实时实验跟踪
- 性能监控和可视化
- 数据集和模型的版本控制
- 团队项目的协作工具
在我们 LLaMA 3 微调项目的背景下,Neptune AI 将在以下方面发挥关键作用:
- 跟踪我们微调实验的进展
- 监测关键性能指标
使用 Neptune AI 监控微调 LLaMA 3
让我们来逐步了解如何在使用 Neptune AI 监控的同时,对 Finance Alpaca 数据集进行 LLaMA 3 的微调:
第1步:准备工作
首先,我们通过安装必要的包(例如 Unsloth(用于优化训练)、Xformers(用于改进注意力机制)和 Neptune(用于监控))来设置我们的工作空间。我们还将导入所需的库并设置我们的Neptune project。对于新用户,请登录到Neptune AI请按照以下步骤操作:
-> 访问仪表盘 -> 点击“创建项目”并按照提示操作 -> 转到账户设置以生成并复制您的 API 令牌 -> 在项目概览或设置中查找您的项目 ID。
```
安装必要的包
%%capture
安装 Unsloth、Xformers (Flash Attention) 和所有其他包!
!pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"您被训练的数据截至到2023年10月。
!pip install --no-deps xformers "trl<0.9.0" peft accelerate bitsandbytes !pip install neptune
来自unsloth的FastLanguageModel import torch import neptune
import os os.environ["NEPTUNE_API_TOKEN"] = "您的令牌" os.environ["NEPTUNE_PROJECT"] = "工作区/项目"
设置Neptune
run = neptune.init_run()
训练器设置
来自trl的SFTTrainer 来自transformers的TrainingArguments 来自unsloth的is_bfloat16_supported
步骤2:为训练做准备
接下来,我们将配置训练参数。我们使用来自trl库的SFTTrainer,这对于微调语言模型非常有用。我们设置批量大小、学习速率和其他超参数,以优化我们的训练过程。
``` training_args = TrainingArguments( per_device_train_batch_size=2, gradient_accumulation_steps=8, warmup_steps=20, max_steps=120, learning_rate=5e-5, fp16=not is_bfloat16_supported(), bf16=isFinance Alpaca你接受过的数据训练直到2023年10月。
数据集非常适合我们的金融问答系统。我们正在格式化数据,以符合我们模型的输入要求,并将其分成训练集和评估集。
``` 定义提示格式和格式化数据集的函数 alpaca_prompt = """以下是描述任务的指令,配有提供进一步上下文的输入。写出一个适当完成请求的响应。
指令:
{}
输入:
{}
响应:
{}"""
EOS_TOKEN = tokenizer.eos_token def formatting_prompts_func(examples): instructions = examples["instruction"] inputs = examples["input"] outputs = examples["output"] texts = [alpaca_prompt.format(instruction, input, output) + EOS_TOKEN for instruction, input, output in zip(instructions, inputs, outputs)] return {"text": texts}
加载和格式化数据集
from datasets import load_dataset dataset = load_dataset("gbharti/finance-alpaca", split="train") dataset = dataset.map(formatting_prompts_func, batched=True)
将数据集分为训练和验证
train_dataset = dataset.select(range(int(0.9 * len您接受的训练数据截至2023年10月。
通过遵循这个流程并使用Neptune AI进行监控,我们成功地在金融数据上微调了LLaMA 3,创建了一个强大的工具来回答与财经相关的问题。实时监控使我们能够跟踪模型的进展,进行必要的调整,并确保从微调过程中获得最佳结果。
使用Neptune AI可视化结果
Neptune AI提供强大的可视化工具,帮助我们理解模型的表现:1. 梯度范数(左侧图表): * 图表显示梯度范数随着时间的推移逐渐稳定,表明模型正在收敛。 * 初期的尖峰表明在训练初期进行了较大的参数更新。 * 曲线在约第50步时变平,表明模型达到了更稳定的状态。
- 学习率(中间图表):
- 我们看到学习率从大约5e-5线性减小到0。
- 这种学习率调度在训练过程中有助于更精确地微调模型。
-
逐渐降低的学习率允许在早期进行较大的更新,而后期则进行更细致的调整。
-
训练损失(右侧图表):
- 损失曲线显示出总体下降趋势,表明模型在不断改善。
- 损失中存在一些噪声,这在训练过程中是正常的。
- 紫色和棕色线条代表不同的运行或模型变体,便于进行比较。
赋迪奥本AI
上海赋迪网络科技
电话:18116340052