量化金融领域的大语言模型(LLM)正被 increasingly 广泛应用于 Alpha 信号挖掘、自动化报告分析以及风险预测等场景。然而,其应用推广仍受限于高昂的成本、响应延迟以及系统集成的复杂性。在金融市场中,Alpha 信号往往从快速演变的数据中涌现,因此,持续进行模型微调与知识蒸馏,并具备部署来自专有数据和真实世界数据源模型的能力,显得尤为关键。
该示例展示了 NVIDIA 技术如何实现持续的模型微调与知识蒸馏,从而无缝集成到金融工作流中。研究人员可直接连接回测与策略评估流程,系统性地完成高性能模型的优化、压缩与部署。
面向量化研究人员、AI 开发者以及企业数据科学家的金融数据开发者 AI 模型蒸馏示例,展示了 NVIDIA 技术如何支持持续的模型微调与知识蒸馏,实现与金融工作流的无缝集成。通过飞轮机制,我们处理金融新闻源数据集,从非结构化文本中提取可用于 Alpha 研究和风险预测的特征。最终生成一系列针对特定领域和任务优化的轻量化模型,在显著降低计算开销与部署成本的同时,保持较高的准确性。
什么是适用于金融数据的 AI 模型蒸馏?
模型蒸馏是一种将知识从大型高性能的教师模型迁移至小型高效的学生模型的技术,能够在边缘计算或混合环境中实现更快的推理速度、更低的资源消耗以及更便捷的部署,同时保持在特定领域任务中的准确性。
什么是开发者示例?
开发者示例是一种经过验证且可复现的参考架构,结合了最佳实践、软件工具与模块化部署模式,旨在加速企业级 AI 的落地应用。这些端到端、可定制的示例展示了如何利用 NVIDIA AI Enterprise 软件堆栈构建并扩展复杂的工作流程,如领域适应、模型压缩或智能体编排。通过将参考代码与经过验证的架构指南相结合,开发者示例有效弥合了从概念验证到生产部署之间的鸿沟。
该开发者示例提供了一个用于持续领域自适应与模型蒸馏的实用框架,可用于构建专为企业财务数据优化的小型高效模型。通过整合 NVIDIA NeMo、NVIDIA Nemotron、NVIDIA NIM 以及容器化的组件,用户能够构建支持特征工程、信号评估与模型再训练的数据飞轮。该架构兼具本地与混合云部署能力,在确保灵活性的同时,满足财务数据治理的合规要求。
该示例展示了如何将具有49B或70B参数的教师模型的能力蒸馏到较小的自定义学生模型中(如本例中的1B、3B或8B模型)。我们通过一个多类分类任务来演示这一过程:首先利用教师模型为数据集生成标签,然后使用这些标注好的数据对学⽣模型进行定制化训练。
开发者示例使团队能够:
- 将大型语言模型蒸馏为适用于金融文本的高效领域专用版本,在降低延迟和推理成本的同时,保持预期的准确性。
- 通过实现交易信号的快速迭代与评估,加快回测和策略验证速度,并能够随市场环境与数据源的变化持续保持模型的准确性。
- 通过内置的实验跟踪机制,支持系统的模型评估,确保良好的可扩展性与可观测性。
- 将蒸馏后的模型与现有 NIM 集成,部署至涵盖本地、混合云及边缘环境的金融 AI 工作流中。
这些功能支持将轻量级专用模型直接集成至研究流程、交易系统或边缘推理环境,实现高效部署。
它是如何运作的?
我们提供一种可重复使用的方法,基于 NVIDIA Data Flywheel Blueprint 对这些蒸馏模型进行实验与训练。该 Blueprint 的核心是飞轮编排器,作为统一的控制平面,它有效简化了与 NVIDIA NeMo 微服务 直接交互的复杂性。作为飞轮系统的核心,编排器 API 通过一组模块化的 NeMo 微服务,协调整个数据飞轮的工作流程。
- NVIDIA NeMo Customizer 支持基于 LoRA 的轻量级微调
- NVIDIA NeMo Evaluator 可实现推理过程中的自动化评估
- NeMo 内置数据存储功能,用于管理结构化数据集与模型构件
- NeMo 部署管理器支持动态启动并提供候选蒸馏模型用于推理
每个微服务都被打包为一个 Docker 容器,以实现跨环境的一致性部署。该流程通过 Kubernetes 进行编排,能够动态调度 NIM 微服务,满足实验和生产工作负载的需求。
NeMo 微服务预备知识
要启动并运行开发者示例,您需要先配置环境并部署所需的服务。具体操作步骤请参考 GitHub上的说明。
- 生成个人 API 密钥,用于提取 Docker 容器和相关资源,部署 NeMo 微服务,并访问以 NIM 形式托管的开源 Nemotron 模型。
- 部署 NeMo 微服务平台。
- 安装并配置 Data Flywheel Orchestrator。
环境准备就绪后,您将通过 config.yaml 文件来配置模型和工作流程。
注意: 该文件将在飞轮服务器启动时加载,且在飞轮运行期间保持不变。如需更新任何内容,必须先停止服务,修改 YAML 文件后重新部署。
解压工作流程
接下来,我们通过开发者示例的实际应用,展示工作流程的各个阶段,包括精选的代码片段和实验结果。通过不同模型配置与数据集规模对性能、效率和准确性的影响分析,结合多个实验的运行过程以及优化后的模型对比,本演示重点呈现了开发者示例如何助力团队持续迭代模型,在成本、可扩展性和精度之间实现更优平衡。
第 1 步:数据集标记
我们使用一个包含新闻标题的样本数据集来演示该工作流程。通过利用教师模型、提示词以及随代码提供的少量样本示例,我们为数据集中的每个标题生成相应的分类标签。教师模型的任务是将标题划分为预定义的13个类别之一。为了评估大语言模型(LLM)的基准性能,我们将模型的分类结果与数据集中约1000个由人工标注的样本进行对比分析。
以下是三个金融新闻标题示例,每个标题的标签均由教师模型分配:
[
{
"Headline": "Ultratech Achieves ISO 9001 and 14001 Certification for Singapore Operations and Recertification for U.S. Facility",
"Classified Category": "Regulatory"
},
{
"Headline": "Mid-Afternoon Market Update: Dow Up Over 200 Points; Lakeland Industries Shares Spike Higher",
"Classified Category": "Stock price movement"
},
{
"Headline": "Analyst: Chipotle Is Successful Because It Sticks To What Works (Giant, Tasty Burritos)",
"Classified Category": "Analyst Rating"
}
]
我们按照 Data Flywheel Blueprint 的步骤依次执行。
第 2 步:将数据集提取到飞轮服务器
接下来,我们将数据集导入Elasticsearch索引。提示词和教师模型的响应均采用与OpenAI兼容的格式,实验则通过数据飞轮服务器进行运行。
"request": {
"model": "meta/llama-3.3-70b-instruct",
"messages": [
{
"role": "system",
"content": "You are a financial news classifier."
},
{
"role": "user",
"content": "USER PROMPT"
}
]
},
"response": {
"choices": [
{
"message": {
"role": "assistant",
"content": "[[[analyst rating]]]"
}
}
]
},
"workload_id": "news_classifier",
"client_id": "<DATASET ID>", # dataset identifier in the flywheel server
"timestamp": 1760845128 #timestamp when dataset was last updated
}
此外,在本示例中,我们展示了如何通过自定义学生模型,使其表现与教师模型相匹配,而无需依赖完整的数据集。我们将数据集划分为原始数据集的若干较小的分层子集(包含 5 千、1 万和 2.5 万个样本)。拆分的规模和采样比例可在 config.yaml 文件中进行配置,支持从多个标签类别中按比例采样(其中部分类别的出现频率低于其他类别),具体配置方式可参考默认示例。<!–
# Data split config:
# train, val, eval split sizes and ratios
data_split_config:
eval_size: 100
val_ratio: 0.1
min_total_records: 50
random_seed: 42
limit: null # null = use all available records (ingress limit increased to 1GB)
parse_function_arguments: true # parse function arguments to JSON objects for tool calling records
stratify_enabled: true # Enable stratified splitting to maintain class balance
min_samples_per_class: 2 # Minimum samples required per class for stratification
rare_class_threshold: 1 # Group classes with <= this many samples as 'others'
接下来,利用飞轮服务器,我们针对不同规模的数据集,重复执行以下步骤,对模型进行定制与评估。
第 3 步:微调作业
使用 NeMo Customizer,可通过 LoRA 适配器启动监督式微调任务。每个任务将数据集的知识蒸馏到适配器中,从而生成针对特定任务的轻量化模型。蒸馏过程中所需的学生模型应在 config.yaml 文件中指定。
例如,为了将 llama-3.2-1b-instruct 模型选为候选学生模型之一,我们将依据 NeMo 微服务模型目录中的命名规范及相关信息,明确其模型名称和具体配置。
nim:
- model_name: "meta/llama-3.2-1b-instruct"
model_type: "llm"
context_length: 8192
gpus: 1
pvc_size: 25Gi
tag: "1.8.3"
customization_enabled: true
customizer_configs:
target: "meta/llama-3.2-1b-instruct@2.0"
gpus: 1
max_seq_length: 8192
第 4 步:评估运行情况
然后,我们比较自定义与非自定义学生模型的性能,具体通过对比各候选学生的 F1 分数来实现。
- base-eval:学生模型在自定义前的零样本 F1-score 基准
- custom-eval:自定义模型的 F1-score 评估结果
第 5 步:评分和聚合
模型输出由 NeMo Evaluator 进行评分,并通过 Orchestrator API 上报结果。我们根据不同学生及其对应的数据集规模对结果进行汇总。
第 6 步:审核和推广
开发者可通过编程方式访问指标、下载产物、启动后续实验,或将表现优异的候选模型推广至生产环境,以替代教师 NIM。
该循环可根据需求进行调度或触发,从而构建一个自动化且可扩展的系统,持续逐步生成更小、更快、更具成本效益的模型,同时保持与较大基准模型相当的准确性。
结果
表1和图3中报告的F1分数是在坚持测试集上评估的,并以大型教师模型的F1分数为基准进行相对比较。在此设定下,教师模型被视为理想性能参照,各蒸馏学生模型的表现均与其对比。
该表清晰地表明,较大的学生模型在教师指导下学习的能力更强,即使在少量示例的情况下也能取得更高的分数。随着训练样本数量的增加,各尺寸学生模型所蒸馏出的模型质量均有所提升。当示例数量足够时,不同规模的学生模型最终可达到相近的F1分数。
这些结果展示了在蒸馏过程中采用更大规模的学生模型和更多训练数据时所面临的权衡以及潜在的收益。在 AI 模型蒸馏应用于金融数据开发示例中,数据可获得性、硬件限制、延迟要求以及推理时的吞吐量等实际因素,都会影响各应用场景下的最优选择。
| 训练数据 | 模型名称 | F1-Score |
| 5000 | meta/llama-3.2-1b-instruct | 0.29 |
| 10000 | meta/llama-3.2-1b-instruct | 0.78 |
| 25000 | meta/llama-3.2-1b-instruct | 0.9 |
| 5000 | meta/llama-3.2-3b-instruct | 0.584 |
| 10000 | meta/llama-3.2-3b-instruct | 0.89 |
| 25000 | meta/llama-3.2-3b-instruct | 0.95 |
| 5000 | meta/llama-3.1-8b-instruct | 0.8 |
| 10000 | meta/llama-3.1-8b-instruct | 0.94 |
| 25000 | meta/llama-3.1-8b-instruct | 0.95 |
总结
在金融领域,模型蒸馏技术使更小、更高效的模型能够逼近复杂模型的性能,在不牺牲准确性的前提下提升运行效率与可解释性。通过将知识从大型教师模型迁移至轻量级学生模型,该方法为金融数据开发者提供了有效的AI模型优化方案,有助于加快特征工程与信号生成、风险控制及监控等环节的决策速度。
了解详情
模型压缩技术正快速演进,为大语言模型在各行业的高效部署开辟了新的可能。如需了解更多详情,欢迎查阅以下资源:
- 如需深入了解数据飞轮 blueprint,建议阅读相关博文并观看配套视频。
- 如需掌握高级压缩技术,可通过 NVIDIA 深度学习培训中心学习“压缩 LLM 的艺术”课程。
开始使用
访问 build.nvidia.com,使用 NVIDIA Brev 或您自己的云基础设施(基于标准 GitHub 仓库),在 GPU 加速环境中部署 Notebook。