项目概述
在大语言模型(LLM)领域,上下文学习能力一直是衡量模型性能的关键指标。然而,现有模型在处理超过100个上下文示例时往往表现出显著的性能衰减。为解决这一挑战,MachineLearningLM团队推出了基于Qwen2.5-7B架构深度优化的MachineLearningLM-7B-v1模型,通过在数百万个合成表格机器学习任务上进行持续预训练,实现了从8到1024个示例的高效扩展。该模型在未见过的表格任务上比o3-mini、GPT-5-mini和Qwen-2.5-7B-Instruct等主流模型提升约15%,同时达到随机森林级别的数值建模稳健性,MMLU得分达75.4%。相关研究成果已发表于论文《MachineLearningLM: Scaling Many-shot In-context Learning via Continued Pretraining》(arXiv:2509.06806),项目代码已开源至GitCode仓库。
评估验证体系
为确保模型性能的可靠性和可复现性,研究团队开发了一套自动化评估框架,用户只需设置相应参数即可轻松进行验证和评估。该框架支持多种运行模式,包括端到端流水线、并行处理和顺序处理,满足不同场景下的评估需求。
快速启动指南
首先安装必要的依赖包:
pip install -r requirements.txt
基础推理命令示例:
python ./src/evaluation/model_pred/dl_model_pred.py \
--input_dir ./demo_input.jsonl \
--output_dir ./demo_output.jsonl \
--model_name MachineLearningLM/MachineLearningLM-7B-v1
评估流水线设置
- 首先修改评估参数配置文件:
source evaluate_parameters.sh
- 选择适合的处理模式:
选项1:端到端流水线
./scripts/evaluate_pipeline.sh
选项2:并行处理(推荐用于大规模评估)
# 数据预处理
./scripts/multi_process/data_prep.sh
# 提示生成
./scripts/multi_process/prompt_gen.sh
# 深度学习模型推理(仅需深度学习评估时运行)
./scripts/multi_process/model_pred.sh
# 结果评估
./scripts/multi_process/evaluation.sh
# 报告生成
./scripts/multi_process/report.sh
选项3:顺序处理(适合资源有限环境)
# 数据预处理
./scripts/single_process/data_prep.sh
# 提示生成
./scripts/single_process/prompt_gen.sh
# 深度学习模型推理(仅需深度学习评估时运行)
./scripts/single_process/model_pred.sh
# 结果评估
./scripts/single_process/evaluation.sh
# 报告生成
./scripts/single_process/report.sh
完整使用说明和高级设置选项请参考项目GitCode仓库的详细文档。此外,QuantFactory已发布该模型的GGUF量化版本,用户可通过Hugging Face获取:https://huggingface.co/QuantFactory/MachineLearningLM-7B-v1-GGUF。
数据生成参数详解
MachineLearningLM模型的核心创新在于通过合成表格ML任务进行持续预训练,其数据生成过程由tabicl模块控制,关键参数定义于文件tabicl/src/tabicl/prior/dataset.py的注释中。这些参数可分为数据规模与结构、批次设置、序列长度控制、训练测试分割、生成方法和计算设置六大类。
数据规模与结构参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| min_features | int | 每个数据集的最小特征数量 |
| max_features | int | 每个数据集的最大特征数量 |
| max_classes | int | 目标类别的最大数量 |
| min_seq_len | int | 每个数据集的最小样本数,若为None则使用max_seq_len |
| max_seq_len | int | 每个数据集的最大样本数(不包含) |
批次设置参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| batch_size | int | 每批生成的数据集总数 |
| batch_size_per_gp | int | 每组(共享特征)的数据集数量 |
| batch_size_per_subgp | int | 每个子组(相似因果结构)的数据集数量,默认与batch_size_per_gp相同 |
序列长度控制参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| log_seq_len | bool | 若为True,则从对数均匀分布中采样序列长度 |
| seq_len_per_gp | bool | 按组采样序列长度(支持可变大小的数据集) |
| replay_small | bool | 偶尔采样较小的序列以增强模型稳健性 |
训练测试分割参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| min_train_size | int/float | 训练集分割的起始位置/比例(int:绝对数量,float:相对比例) |
| max_train_size | int/float | 训练集分割的结束位置/比例(int:绝对数量,float:相对比例) |
生成方法参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| prior_type | str | 先验类型:'mlp_scm'(多层感知机因果结构)、'tree_scm'(树结构因果模型)或'mix_scm'(随机选择) |
| fixed_hp | dict | 固定的结构设置参数 |
| sampled_hp | dict | 生成过程中采样的参数 |
计算设置参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| n_jobs | int | 并行作业数量(-1表示使用所有处理器) |
| num_threads_per_generate | int | 每个生成作业的线程数 |
| device | str | 计算设备('cpu'或'cuda') |
模型训练流程
MachineLearningLM采用LLaMA-Factory框架进行训练,该框架支持多种预训练和微调策略,能够高效利用计算资源。以下是详细的训练环境设置步骤:
环境准备
首先进入LLaMA-Factory目录并安装依赖:
cd ./third_party/LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
pip install wandb
启动训练
使用提供的训练脚本开始模型训练:
./scripts/train.sh
该脚本支持自定义训练参数,包括学习率、训练轮数、批处理大小等,用户可根据硬件配置进行优化调整。训练过程中会自动记录关键指标到Weights & Biases平台,便于实时监控训练进度和模型性能变化。
项目结构解析
项目采用模块化设计,结构清晰,便于扩展和维护。核心目录结构如下:
MachineLearningLM/
├── src/ # 源代码目录
│ ├── evaluation/ # 评估相关模块
│ │ ├── data_prep/ # 数据预处理和分块工具
│ │ ├── prompt_gen/ # 深度学习模型提示生成器
│ │ ├── model_pred/ # 模型推理(机器学习和深度学习预测引擎)
│ │ ├── result_proc/ # 五层评估架构和指标处理
│ │ ├── zero_summary/ # 结果汇总和报告生成
│ │ └── tabicl_evaluate.py # Tabicl专用评估脚本
│ └── prior_data # 先验数据处理
│ └── pt_to_csv.py # 将PyTorch张量转换为CSV格式
├── scripts/ # 执行脚本目录
│ ├── single_process/ # 顺序执行shell脚本
│ ├── multi_process/ # 并行执行shell脚本(带_mp后缀)
│ ├── evaluate_parameters.sh # 全局参数配置文件
│ ├── evaluate_pipeline.sh # 自动化流水线脚本
│ ├── generate_data.sh # 数据生成脚本
│ ├── tabicl_evaluate.sh # Tabicl评估脚本
│ └── train.sh # 训练脚本
├── datahub_inputs/ # 数据输入目录
│ ├── data_demo/ # 测试用演示数据集
│ └── data_raw/ # 原始输入数据集
├── third_party/ # 第三方依赖
│ ├── tabicl/ # Tabicl库(因果结构模型生成)
│ └── LLaMA-Factory/ # LLaMA-Factory训练框架
├── requirements.txt # 评估框架Python依赖
├── README.md # 项目说明文档(英文)
├── README_zh.md # 项目说明文档(中文)
├── THIRD_PARTY_NOTICES.md # 第三方通知
└── LICENSE # 许可证文件
模型技术规格
MachineLearningLM-7B-v1基于Qwen2.5-7B-Instruct模型进行持续预训练,模型大小约为8B参数,采用BF16张量类型存储,支持文本生成任务。模型使用的训练数据来自MachineLearningLM/machinelearninglm-scm-synthetic-tabularml数据集,该数据集包含427万个合成表格任务样本,涵盖多种数据分布和任务类型。模型文件采用Safetensors格式存储,确保数据安全和加载效率。
模型量化版本
为满足不同部署场景的需求,社区已发布多个量化版本,包括GGUF格式,可通过Hugging Face Hub获取。量化模型在保持核心性能的同时显著降低内存占用,适合在资源受限的设备上部署。
应用前景与未来展望
MachineLearningLM-7B-v1模型的推出,为表格数据的上下文学习提供了新的解决方案。其核心优势在于能够处理大规模上下文示例,同时保持对数值数据的高稳健性,这使得该模型在金融预测、医疗数据分析、市场趋势预测等领域具有广阔的应用前景。未来,研究团队计划从以下几个方向进行改进:
- 扩展模型规模至更大参数版本,进一步提升复杂任务处理能力;
- 增加多模态输入支持,实现表格数据与文本、图像等信息的融合处理;
- 优化推理效率,降低大规模上下文学习的计算成本;
- 开发专用微调工具,支持用户根据特定领域数据快速适配模型。
随着该技术的不断成熟,MachineLearningLM有望成为表格数据分析的重要工具,帮助企业和研究机构从海量数据中提取有价值的见解,推动数据驱动决策的普及和深化。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



