代理式 AI/生成式 AI

构建交互式AI智能体,加速机器学习任务

在开始分析之前,数据科学家通常需要投入大量时间清理和准备大型非结构化数据集,这一过程对编程与统计专业知识要求较高。特征工程、模型调优以及跨工作流的一致性管理复杂且容易出错。基于 CPU 的机器学习工作流程具有速度较慢、串行处理的特点,进一步降低了实验和迭代的效率,加剧了这些挑战。

加速数据科学 ML 智能体

我们开发了一个数据科学智能体原型,该智能体能够理解用户意图,并在机器学习工作流中自动编排重复性任务,从而简化数据科学与机器学习实验流程。借助 GPU 加速能力,智能体可利用 NVIDIA CUDA-X 数据科学库高效处理包含数百万样本的数据集。该原型集成了 NVIDIA Nemotron Nano-9B-v2,一个紧凑而强大的开源语言模型,专为将数据科学家的意图转化为高效、优化的工作流而设计。

通过这一设置,开发者只需与智能体对话,即可探索大型数据集、训练模型并评估结果。它在自然语言与高性能计算之间架起桥梁,让用户在几分钟内就能从原始数据中获取有价值的业务洞察。我们建议以此为起点,结合不同大语言模型、工具和存储方案,根据您的具体需求构建专属的智能体。欢迎在 GitHub 上查看该智能体的 Python 脚本。

数据科学智能体编排

该智能体的架构专为模块化、可扩展性以及GPU加速而设计,包含五个核心层和一个临时数据存储模块。各组件协同工作,能够将自然语言提示转化为可执行的数据处理与机器学习工作流。图1展示了各层之间交互的高层工作流程。

An image showing the Data Science Agent consisting of six layers: User Interface, Agent Orchestrator, LLM Layer, Memory Layer, Temporary Data Storage, and Tool Layer. An image showing the Data Science Agent consisting of six layers: User Interface, Agent Orchestrator, LLM Layer, Memory Layer, Temporary Data Storage, and Tool Layer.
图1:数据科学智能体的架构示意图

让我们深入探讨这些层级之间是如何协同工作的。

第一层:用户界面
用户界面采用基于 Streamlit 构建的对话式聊天机器人,使用户能够通过简单的英语与智能体进行交互。

第二层:智能体编排器
该层作为中心控制器,负责与所有其他层级进行协调。它能够解析用户输入的提示,调用大语言模型(LLM)以理解用户意图,从工具层触发相应的GPU加速函数,并以自然语言形式生成响应。每个编排器方法均为GPU函数的轻量级封装。例如,当用户查询中包含 _describe_data 时,编排器会调用 basic_eda();当查询中包含 _optimize_ridge 时,则会调用 optimize_ridge_regression()

Figure 2 illustrates this flow for the query to "optimize SVC with 50 trials". The input is first paraphrased into a clarified intent, improving LLM accuracy, then converted into a structured function call and executed with GPU tools gpu_tools.optimize_svc(X_train, y_train, preprocessor, 50). Figure 2 illustrates this flow for the query to "optimize SVC with 50 trials". The input is first paraphrased into a clarified intent, improving LLM accuracy, then converted into a structured function call and executed with GPU tools gpu_tools.optimize_svc(X_train, y_train, preprocessor, 50).
图2。示例查询的编排流程:“通过50次试验优化SVC”

第三层:LLM 层
LLM 层作为智能体的推理引擎,负责初始化语言模型客户端,以便通过 NVIDIA NIM API 与 Nemotron Nano 9B-v2 进行通信。该层使智能体能够理解自然语言输入,并通过四个关键机制将其转化为结构化且可执行的操作:语言模型本身、支持弹性通信的重试策略、用于结构化工具调用的函数调用机制,以及函数调用上下文管理窗口。

  • LLM 模型
    LLM 层架构与具体语言模型无关,可与任何支持函数调用的语言模型协同工作。在本应用中,我们采用了支持函数调用和高级推理能力的 Nemotron Nano-9B-v2 模型。该模型体积更小,在效率与功能之间实现了良好平衡,能够在单个 GPU 上完成推理部署。相比同类领先模型,其 token 吞吐量最高可达 6 倍,同时“思考预算”功能使开发者能够控制“思考”tokens 的使用量,从而将推理成本降低最多 60%。这种高性能与高成本效益的结合,使得实时对话式工作流在生产环境中具备良好的经济可行性。
  • 弹性通信重试策略
    为实现弹性通信,LLM 客户端集成了指数退避重试机制,以应对瞬态网络故障和 API 速率限制,确保在不利网络条件或高 API 负载情况下仍能维持稳定通信。
  • 结构化工具调用函数
    在结构化工具调用方面,函数调用功能使 LLM 能够在智能体协调器(Agent Orchestrator)中将用户意图转化为结构化的工具调用,从而在自然语言与代码执行之间建立桥梁。智能体采用与 OpenAI 兼容的工具定义格式,明确每个工具的名称、用途、参数及约束条件。
  • 函数调用窗口
    函数调用机制将 LLM 从单纯的文本生成器转变为具备 API 编排能力的推理引擎。Nemotron Nano-9B-v2 模型通过内置的结构化“API 规范”理解用户意图,选择合适的工具,提取符合类型要求的参数,并协调多步骤的数据处理与机器学习操作。整个过程完全基于自然语言完成,用户无需掌握 API 语法或编写代码。

    图 3 展示了完整的函数调用流程,说明自然语言如何被转化为可执行指令。更多细节可参考 GitHub 代码库中的 chat_agent.pyllm.py 脚本,以复现图 3 中列出的操作。
A diagram showing four sequential steps: Step 1 - User request with tool specifications. Step 2 - LLM generates a structured tool call. Step 3 - Agent parses and executes the tool. Step 4 - Tool results appended to conversation. A diagram showing four sequential steps: Step 1 - User request with tool specifications. Step 2 - LLM generates a structured tool call. Step 3 - Agent parses and executes the tool. Step 4 - Tool results appended to conversation.
图 3。4 个步骤实现函数调用

第 4 层:显存层
显存层(ExperimentStore)用于存储实验元数据,包括模型配置、性能指标以及准确率、F1 分数等评估结果。这些元数据以标准 JSONL 格式保存在与特定会话对应的文件中,支持通过 get_recent_experiments()show_history() 等函数在会话过程中进行跟踪与检索。

第 5 层:临时数据存储
临时数据存储层将特定会话的输出文件(best_model.joblibpredictions.csv)保存在系统的临时目录及用户界面中,便于即时下载和使用。当智能体关闭时,这些文件将被自动清除。

第 6 层:工具层
工具层是智能体的计算核心,负责执行各类数据科学任务,包括数据加载、探索性数据分析(EDA)、模型训练与评估,以及超参数优化(HPO)。具体执行哪些函数,取决于用户的查询内容。该层采用多种优化策略,以提升处理效率与结果质量。

  1. 一致性与可重复性
    该智能体采用 scikit-learn(一种广泛使用的开源库)的多种抽象方法,确保数据预处理和模型训练在训练、测试及生产环境中保持一致。该设计通过在推理阶段自动应用训练过程中学习到的相同转换(包括估算值、缩放参数和编码映射),有效避免了常见的机器学习问题,如数据泄露和预处理不一致。
  2. 显存管理
    为应对大规模数据集的处理需求,系统采用了多种内存优化策略。Float32 转换可显著降低显存占用,GPU 显存管理机制能够及时释放活跃的缓存,提升资源利用率。此外,相较于稀疏格式,GPU 上的密集输出配置在处理速度方面表现更优。
  3. 函数执行
    工具执行代理集成 cuDF 和 cuML 等 CUDA-X 数据科学库,实现 GPU 加速,同时保留与 pandas 和 scikit-learn 一致的编程接口。这种无需修改代码即可实现加速的能力,得益于 Python 的模块预加载机制,使开发者能够直接在 GPU 上运行现有的 CPU 代码,无需重构。其中,cudf.pandas 加速器可将 pandas 操作自动替换为等效的 GPU 操作,cuml.accel 则能自动将 scikit-learn 模型切换为 cuML 提供的 GPU 实现版本。

以下命令将启动 Streamlit 界面,同时为数据处理和机器学习组件启用 GPU 加速功能。

python -m cudf.pandas -m cuml.accel -m streamlit run user_interface.py

加速、模块化与扩展:推动机器学习智能体的发展

该智能体采用模块化设计,支持通过新增函数调用、实验存储、大语言模型(LLM)集成及其他增强功能进行灵活扩展。其分层架构便于随时间推移逐步整合更多功能。开箱即用的功能涵盖主流机器学习算法、探索性数据分析(EDA)以及超参数优化(HPO)。

借助 CUDA-X 数据科学库,智能体能够端到端加速数据处理与机器学习工作流程。基于 GPU 的加速在不同操作中可实现 3 倍至 43 倍的性能提升。表 1 重点展示了在机器学习操作、数据处理和超参数优化(HPO)等多个关键任务中所达到的加速效果。

代理任务 CPU (秒) GPU (秒) 加速倍数 分类
ML 任务 21,410 6,886 ~3x 使用逻辑回归、随机森林分类及线性支持向量分类,处理包含 100 万个样本的数据集
ML 任务 57,040 8,947 ~6x 使用岭回归、随机森林回归及线性支持向量回归,处理包含 100 万个样本的数据集
ML 算法超参数优化 18,447 906 ~20x 基于 cuBLAS 实现加速
表 1:智能体利用 CUDA-X 数据科学库实现的端到端加速效果

开始使用 Nemotron 模型与 CUDA-X 数据科学库

探索 Nemotron 模型与 CUDA-X 数据科学库的结合应用。开源的数据科学智能体已在 GitHub 发布,可轻松集成到您的数据集中,支持端到端的机器学习实验。欢迎下载使用,分享您尝试的数据集、实现的加速效果以及所做的自定义配置。

了解详情:

 

 

标签