AutoGluon Multimodal (AutoMM) 完全指南:用基础模型三行代码搞定多模态 AutoML
2026/9/15 13:30:46 网站建设 项目流程

AutoGluon Multimodal (AutoMM) 完全指南:用基础模型三行代码搞定多模态 AutoML

【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon

导读

AutoMM(AutoGluon-Multimodal)是 AutoGluon 项目中面向多模态场景的 AutoML 引擎,它以"三行代码"为核心设计哲学,让开发者无需手动完成数据预处理、模型选择与微调,即可将 HuggingFace、TIMM、MMDetection 等模型库中的基础模型(Foundation Models)适配到自己的领域数据上。本文以 docs/tutorials/multimodal/index.md 为主线,结合 MultiModalPredictor 源码 与 默认配置,系统梳理 AutoMM 支持的数据类型、任务类型、完整教程体系以及核心 API 与配置细节,帮助你快速判断"我的多模态任务应该用哪个教程、走哪条技术路线"。

AutoMM 是什么:面向基础模型的多模态 AutoML

基础模型(Foundation Models)在大规模通用数据上预训练,已在计算机视觉与自然语言处理等领域展现出强大能力。然而,把基础模型真正落地到真实业务场景并非易事:数据模态多种多样、可选的基础模型数量庞大、模型体积又相当可观,这些因素让集成工作充满挑战。

AutoMM 的目标正是打破这些壁垒,它大幅削减了数据预处理、模型选择和微调环节中的人工工程与手动干预。借助 AutoMM,用户只需三行代码,就能把来自主流模型库(如 HuggingFace Transformers、TIMM、MMDetection)的基础模型适配到自己的领域数据上。该工作对应的论文为AutoGluon-Multimodal (AutoMM): Supercharging Multimodal AutoML with Foundation Models(Zhiqiang Tang 等,The International Conference on Automated Machine Learning, 2024)。

在代码层面,AutoMM 的核心入口是MultiModalPredictor类,其类文档明确描述了这一设计定位——"AutoMM is designed to simplify the fine-tuning of foundation models for downstream applications with just three lines of code"(见 predictor.py)。它支持图像、文本、表格(tabular)与文档(document)数据,可单独使用也可任意组合;支持分类、回归、目标检测、命名实体识别(NER)、语义匹配与图像分割等任务。

支持的模型库、数据类型与任务总览

从 constants.py 的常量定义可以清晰地看到 AutoMM 支持的数据列类型与问题类型:

数据列类型text(文本)、text_ner(NER 文本)、numerical(数值)、categorical(类别)、image_path(图像路径)、image_bytearrayimage_base64_strdocument(文档)、document_imagedocument_pdf等。

问题类型(problem_type),在MultiModalPredictor.__init__的参数文档中有完整罗列(predictor.py):

问题类型说明对应教程模块
binary/multiclass/classification二分类 / 多分类文本、图像、多模态分类
regression回归文本、图像、多模态回归
object_detection目标检测Object Detection
ner/named_entity_recognition命名实体识别Text / Multimodal NER
text_similarity/image_similarity/image_text_similarity语义匹配Semantic Matching
feature_extraction特征抽取(仅推理)Semantic Matching 系列
zero_shot_image_classificationCLIP 零样本图像分类Image Prediction
few_shot_classification少样本分类(基础模型 + SVM)Advanced Topics
semantic_segmentation语义分割(Segment Anything)Image Segmentation

需要特别说明的是,部分问题类型默认加载预训练模型后即可进行零样本推理(无需调用.fit()),包括object_detectiontext_similarityimage_similarityimage_text_similarityfeature_extractionzero_shot_image_classification。从 predictor.py 可以看出,MultiModalPredictor会根据问题类型自动选择对应的 Learner 实现(MatchingLearnerObjectDetectionLearnerNERLearnerFewShotSVMLearnerSemanticSegmentationLearnerBaseLearner)。

按数据与任务分类的实战教程全景

以下是 AutoMM 官方教程的完整分类导览(对应 docs/tutorials/multimodal/index.md 的全部导航卡片,链接已转换为仓库内相对路径,可直接点击阅读对应 Notebook)。

文本数据:分类 / 回归 / NER

  • AutoMM for Text Prediction - Quick Start:如何用 AutoMM 训练高质量文本预测模型。教程见 text_prediction/beginner_text.ipynb。
  • AutoMM for Text Prediction - Multilingual Problems:如何在非英文数据集上构建模型。教程见 text_prediction/multilingual_text.ipynb。
  • AutoMM for Named Entity Recognition - Quick Start:如何使用 AutoMM 做实体抽取。教程见 text_prediction/ner.ipynb。另有中文 NER 示例 text_prediction/chinese_ner.ipynb。

在默认配置中,文本模型由hf_text组件承载,默认 checkpoint 为google/electra-base-discriminator,默认 pooling 方式为clsmax_text_len为 512,并使用快速(Rust 版)tokenizer(model/default.yaml);NER 任务则使用独立的ner_text组件,默认 checkpoint 为bert-base-cased,并通过special_tagsXO)完成 BIO 标签体系的建模(model/default.yaml)。

图像数据:分类 / 回归

  • AutoMM for Image Classification - Quick Start:如何训练图像分类模型。教程见 image_prediction/beginner_image_cls.ipynb。
  • Zero-Shot Image Classification with CLIP:如何通过预训练 CLIP 模型在 AutoMM 中启用零样本图像分类。教程见 image_prediction/clip_zeroshot.ipynb。

图像骨干由timm_image组件实现,默认 checkpoint 为swin_base_patch4_window7_224,训练阶段采用resize_shorter_side + center_crop + trivial_augment数据增强管线,图像归一化使用 ImageNet 统计量(model/default.yaml)。CLIP 零样本能力则由clip组件提供,默认 checkpoint 为openai/clip-vit-base-patch32,支持图像与文本两种数据类型(model/default.yaml)。

图像数据:目标检测

  • Quick Start on a Tiny COCO Format Dataset:如何在 COCO 格式数据集上 5 分钟内训练高质量目标检测模型。
  • Prepare COCO2017 Dataset:如何准备 COCO2017 数据集。
  • Prepare Pascal VOC Dataset:如何准备 Pascal VOC 数据集。
  • Prepare Watercolor Dataset:如何准备 Watercolor 数据集。
  • Convert VOC Format Dataset to COCO Format:如何将 VOC 格式数据转换为 COCO 格式。
  • Object Detection with DataFrame:如何使用pd.DataFrame格式进行目标检测。

上述教程的完整入口与数据准备说明见 object_detection/index.md。目标检测模型由mmdet_image组件承载,默认 checkpoint 为yolov3_mobilenetv2_8xb24-320-300e_coco,支持xyxy/xywh两种 bbox 输出格式(model/default.yaml);同时,仓库还内置了 DINO、Faster R-CNN、YOLOX 等预训练检测配置,位于 configs/pretrain/detection。此外,examples 目录下还有完整的 COCO/VOC 数据集下载脚本(download_coco17.sh、download_voc07.sh)与检测训练、评估、推理示例(detection_train.py、finetune_coco_format.py)。

图像数据:语义分割

  • AutoMM for Semantic Segmentation - Quick Start:如何训练语义分割模型。教程见 image_segmentation/beginner_semantic_seg.ipynb。

语义分割由sam组件实现,基于 Segment Anything Model,默认 checkpoint 为facebook/sam-vit-huge,默认冻结mask_decoder.iou_prediction_headprompt_encoder等层(model/default.yaml)。

文档数据:分类 / 回归

  • AutoMM for Scanned Document Classification:如何构建扫描文档分类器。教程见 document_prediction/document_classification.ipynb。
  • Classifying PDF Documents with AutoMM:如何构建 PDF 文档分类器。教程见 document_prediction/pdf_classification.ipynb。

文档模型由document_transformer组件实现,默认 checkpoint 为microsoft/layoutlmv3-base,这是一种专门针对文档版面理解的基础模型(model/default.yaml)。文档类型常量(DOCUMENTDOCUMENT_IMAGEDOCUMENT_PDF)定义于 constants.py。

图像 / 文本数据:语义匹配

  • Text-to-text Semantic Matching - Quick Start:文本-文本语义匹配。教程见 semantic_matching/text2text_matching.ipynb。
  • Image-to-Image Semantic Matching - Quick Start:图像-图像语义匹配。教程见 semantic_matching/image2image_matching.ipynb。
  • Image-Text Semantic Matching - Quick Start:图像-文本语义匹配。教程见 semantic_matching/image_text_matching.ipynb。
  • Zero Shot Image-Text Semantic Matching with AutoMM:零样本图像-文本语义匹配。教程见 semantic_matching/zero_shot_img_txt_matching.ipynb。
  • Text Semantic Search with AutoMM:如何用语义嵌入提升搜索排序效果。教程见 semantic_matching/text_semantic_search.ipynb。

语义匹配任务在 API 层面通过queryresponsematch_label三个参数配置(predictor.py):query/response分别指定查询列与响应列;当不提供标签列时,同一行内的 query-response 对被视作正样本对;match_label用于指定二分类匹配任务中表示"匹配"的标签值。匹配任务的配置集中在 configs/matcher/default.yaml。

多模态数据:分类 / 回归 / NER

  • AutoMM for Text + Tabular - Quick Start:如何将 AutoMM 应用于混合文本、数值、类别列的多模态数据表。教程见 multimodal_prediction/multimodal_text_tabular.ipynb。
  • AutoMM for Image + Text + Tabular - Quick Start:如何在图像、文本、数值、类别数据上训练模型。教程见 multimodal_prediction/beginner_multimodal.ipynb。
  • AutoMM for Entity Extraction with Text and Image - Quick Start:如何训练多模态命名实体识别模型。教程见 multimodal_prediction/multimodal_ner.ipynb。

多模态融合是 AutoMM 的核心能力。当使用多个骨干网络时,AutoMM 会在其上附加一个晚期融合(late-fusion)模型(MLP 或 Transformer)。融合组件在配置文件中定义清晰:fusion_mlp(默认 128 维隐藏层、leaky_relu 激活、layer_norm 归一化)与fusion_transformer(默认 3 个 block、8 个 attention head、GEGLU FFN 激活),见 model/default.yaml;表格侧还有ft_transformer组件,支持对类别与数值列做 Transformer 建模(model/default.yaml)。此外categorical_mlpnumerical_mlp分别负责类别列与数值列的浅层 MLP 编码(model/default.yaml)。

核心 API 深度解析:MultiModalPredictor

MultiModalPredictor定义于 multimodal/src/autogluon/multimodal/predictor.py,是 AutoMM 面向用户的所有功能的统一入口。其构造参数(predictor.py)如下:

参数含义默认值 / 说明
label要预测的目标列名None
problem_type问题类型(见上文表格)不传时自动推断
query/response语义匹配任务中的查询列 / 响应列None
match_label语义匹配中表示"匹配"的标签值None
presets质量预设:best_qualityhigh_quality(默认)、medium_quality,另有对应 HPO 版本None
eval_metric评估指标;None时按问题类型自动选择(多分类默认accuracy、二分类默认roc_auc、回归默认root_mean_squared_errorNone
hyperparameters覆盖默认配置,支持字符串 / 字符串列表 / 字典三种写法None
path模型与产物保存目录;不指定时在工作目录创建AutogluonAutoMM/ag-[TIMESTAMP]None
verbosity日志详细程度,0~42
num_classes/classes目标检测的类别数 / 全部类别名None
pretrained是否使用预训练权重初始化True
use_ensemble/ensemble_size/ensemble_mode是否启用集成(仅多模态分类/回归任务),集成规模与模式(one_shot/sequentialFalse/2/one_shot

构造完成后,MultiModalPredictor的核心方法包括:

  • fit(train_data, tuning_data=None, time_limit=None, hyperparameters=None, column_types=None, holdout_frac=None, teacher_predictor=None, hyperparameter_tune_kwargs=None, ...)(predictor.py):训练模型。tuning_data不传时会自动从训练集按holdout_frac划分验证集用于早停与超参优化;teacher_predictor用于知识蒸馏;hyperparameter_tune_kwargs用于配置 HPO(num_trialsschedulersearcher)。
  • predict(data)/predict_proba(data):预测标签 / 分类概率。predict_proba(as_multiclass=False)可返回二分类正类概率(对应positive_class属性)。
  • evaluate(data, metrics=None)(predictor.py):在给定数据集上评估模型,可传入指标名列表;不传时仅返回保存的_eval_metric_name对应分数。
  • 常用属性:pathlabelproblem_typeeval_metrictotal_parameterstrainable_parametersmodel_sizeclass_labelspositive_class等。

关于hyperparameters参数的三种写法(predictor.py):

# 写法一:空格分隔的字符串 hyperparameters = "model.hf_text.checkpoint_name=google/electra-small-discriminator model.timm_image.checkpoint_name=swin_small_patch4_window7_224" # 写法二:字符串列表 hyperparameters = [ "model.hf_text.checkpoint_name=google/electra-small-discriminator", "model.timm_image.checkpoint_name=swin_small_patch4_window7_224", ] # 写法三:字典 hyperparameters = { "model.hf_text.checkpoint_name": "google/electra-small-discriminator", "model.timm_image.checkpoint_name": "swin_small_patch4_window7_224", }

这些键对应 configs/model/default.yaml 中的配置层级(model.<组件名>.<参数>),从而可以在不改源码的情况下灵活替换骨干网络、调整图像尺寸、切换 pooling 方式等。

三行代码实战:以 PetFinder 多模态分类为例

multimodal-quick-start.ipynb 给出了一个端到端的完整示例,使用简化版 PetFinder 数据集(预测宠物领养速度,二分类),数据同时包含图片、文本描述与表格特征。核心流程如下:

第一步:安装并加载数据。通过load_zip下载数据集压缩包,用 pandas 读取train.csvtest.csv,目标列为AdoptionSpeed。AutoGluon 的多模态 DataFrame 格式要求图片列中每个单元格是单个图片文件的路径字符串,因此示例对以;分隔的多图字段取第一张,并用path_expander把相对路径转换为绝对路径。

第二步:三行代码训练。

from autogluon.multimodal import MultiModalPredictor predictor = MultiModalPredictor(label=label_col).fit( train_data=train_data, time_limit=120 )

在底层,fit会自动推断问题类型(分类或回归)、检测特征模态、从多模态模型池中挑选模型并完成训练;若使用多个骨干,还会在其上叠加晚期融合模型。

第三步:预测与评估。

predictions = predictor.predict(test_data.drop(columns=label_col)) probs = predictor.predict_proba(test_data.drop(columns=label_col)) scores = predictor.evaluate(test_data, metrics=["roc_auc"])

这个示例印证了本文导读中的承诺:加载数据之后,训练、预测、概率输出与指标评估加起来不超过几行代码。

训练配置体系:优化器与训练策略

AutoMM 的训练配置集中在 configs/optim/default.yaml,理解这些参数有助于调优训练效果:

  • 优化器:默认adamw,学习率1e-4,权重衰减0.001
  • 学习率策略:默认lr_choice: layerwise_decay(逐层衰减,lr_decay: 0.9),调度器为cosine_decay(余弦退火),warmup_steps: 0.1(热身比例),end_lr: 0
  • 训练轮数max_epochs: 20;早停patience: 10val_check_interval: 0.5(每半个 epoch 校验一次)。
  • 梯度处理gradient_clip_val: 1gradient_clip_algorithm: "norm"
  • 正则化与损失label_smoothing: 0;分类支持focal_lossgamma: 2.0)应对类别不平衡;top_ktop_k_average_method(支持uniform_soup/greedy_soup/best)实现模型权重平均。
  • 参数高效微调(PEFT)peft支持bit_fit(仅微调 bias)、norm_fitloralora_biaslora_norm等模式,lora配置块中默认仅适配 query/value 注意力权重(r: 8alpha: 8)。这是 efficient_finetuning_basic.ipynb 中单卡微调十亿级模型(如 FLAN-T5-XL)的核心支撑。

进阶主题:从微调到生产加速

原文档的 Advanced Topics 板块提供了 11 个进阶教程,覆盖模型训练与部署的完整生命周期(对应 advanced_topics/index.md 目录下的 Notebook):

  • 参数高效微调:efficient_finetuning_basic.ipynb —— 组合 IA³、BitFit 与梯度检查点在单 GPU 上微调更大规模的基础模型。
  • 超参数优化:hyperparameter_optimization.ipynb —— 基于 Ray Tune 的 HPO(fithyperparameter_tune_kwargs参数)。
  • 知识蒸馏:model_distillation.ipynb —— 通过teacher_predictor参数将教师模型知识迁移给学生模型。
  • 持续训练:continuous_training.ipynb —— 在已有模型基础上继续训练。
  • 自定义配置:customization.ipynb —— 深度定制 AutoMM 配置。
  • Presets 预设:presets.ipynb —— 理解best_quality/high_quality/medium_quality及对应 HPO 变体。
  • 少样本学习:few_shot_learning.ipynb —— 基础模型 + SVM 的少样本分类方案(对应FewShotSVMLearner)。
  • 类别不平衡:focal_loss.ipynb —— 用 Focal Loss 处理类别不平衡。
  • TensorRT 加速推理:tensorrt.ipynb —— 用 TensorRT 加速 AutoMM 推理。
  • 问题类型与评估指标:problem_types_and_metrics.ipynb —— AutoGluon 支持的完整问题类型与评估指标清单。
  • 多标签列:multiple_label_columns.ipynb —— 多标签列处理。

此外,多模态集成学习可通过use_ensemble=True开启(由EnsembleLearner实现),支持one_shotsequential两种集成模式(predictor.py),适合对精度有更高要求的场景。

结语与学习路线建议

AutoMM 的设计哲学是把"数据预处理、模型选择、微调"这三件最繁琐的事交给框架,让开发者聚焦于业务本身。根据你的任务类型,可以按以下路线快速上手:

  1. 纯文本任务(分类/回归/NER)→ 从 beginner_text.ipynb 开始;
  2. 纯图像任务→ 分类看 beginner_image_cls.ipynb,检测看 object_detection/index.md,分割看 beginner_semantic_seg.ipynb;
  3. 多模态组合(图像+文本+表格)→ 直接阅读 multimodal-quick-start.ipynb 与 beginner_multimodal.ipynb;
  4. 搜索/匹配类业务→ 进入 semantic_matching 系列;
  5. 追求极致精度或受限资源→ 再深入 advanced_topics 的微调、蒸馏、HPO 与 TensorRT 加速。

官方评测指标、问题类型与相关实现细节,可结合 predictor.py 与 constants.py 源码对照阅读,以更准确地把握 AutoMM 的能力边界与配置方式。

【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询