自定义AutoMM¶
AutoMM 拥有强大且易于使用的配置设计。 本教程将引导您了解各种 AutoMM 配置,以增强您的自定义灵活性。具体来说,AutoMM 配置由以下几个部分组成:
优化
环境
模型
数据
蒸馏器
优化¶
优化.学习率¶
学习率。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.learning_rate": 1.0e-4})
# set learning rate to 5.0e-4
predictor.fit(hyperparameters={"optimization.learning_rate": 5.0e-4})
optimization.optim_type¶
优化器类型。
"sgd"
: 带有动量的随机梯度下降。"adam"
: 一种基于一阶和二阶矩自适应估计的随机梯度下降方法。详情请参见 这篇论文。"adamw"
: 通过将权重衰减与优化步骤解耦来改进adam。详情请参见这篇论文。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.optim_type": "adamw"})
# use optimizer adam
predictor.fit(hyperparameters={"optimization.optim_type": "adam"})
optimization.weight_decay¶
权重衰减。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.weight_decay": 1.0e-3})
# set weight decay to 1.0e-4
predictor.fit(hyperparameters={"optimization.weight_decay": 1.0e-4})
优化.学习率衰减¶
后面的层可以比前面的层有更大的学习率。最后一层/头部层有最大的学习率 optimization.learning_rate
。对于一个有 n
层的模型,第 i
层的学习率为 optimization.learning_rate * optimization.lr_decay^(n-i)
。要使用统一的学习率,只需将学习率衰减设置为 1
。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.lr_decay": 0.9})
# turn off learning rate decay
predictor.fit(hyperparameters={"optimization.lr_decay": 1})
优化.学习率倍数¶
当我们使用两阶段学习率选择时,
最后一层/头层的学习率最大,为 optimization.learning_rate
* optimization.lr_mult
。
而其他层的学习率为正常的 optimization.learning_rate
。
要使用统一的学习率,只需将学习率倍数设置为 1
。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.lr_mult": 1})
# turn on two-stage lr for 10 times learning rate in head layer
predictor.fit(hyperparameters={"optimization.lr_mult": 10})
优化.学习率选择¶
我们可能希望不同的层有不同的学习率,
这里我们有策略 two_stages
学习率选择(详见 optimization.lr_mult
部分),
或者 layerwise_decay
学习率选择(详见 optimization.lr_decay
部分)。
要使用统一的学习率,只需将其设置为 ""
。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.lr_choice": "layerwise_decay"})
# turn on two-stage lr choice
predictor.fit(hyperparameters={"optimization.lr_choice": "two_stages"})
优化.学习率调度¶
学习率调度。
"cosine_decay"
: 学习率的衰减遵循余弦曲线。"polynomial_decay"
: 学习率基于多项式函数进行衰减。"linear_decay"
: 线性衰减学习率。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.lr_schedule": "cosine_decay"})
# use polynomial decay
predictor.fit(hyperparameters={"optimization.lr_schedule": "polynomial_decay"})
optimization.max_epochs¶
一旦达到这个数量的训练周期,停止训练。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.max_epochs": 10})
# train 20 epochs
predictor.fit(hyperparameters={"optimization.max_epochs": 20})
optimization.max_steps¶
在此步骤数后停止训练。如果达到optimization.max_steps
或optimization.max_epochs
(以最早者为准),训练将停止。
默认情况下,我们通过将其设置为-1来禁用optimization.max_steps
。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.max_steps": -1})
# train 100 steps
predictor.fit(hyperparameters={"optimization.max_steps": 100})
optimization.warmup_steps¶
在训练开始时,将学习率从0预热到optimization.learning_rate
,在此步骤的百分比内完成。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.warmup_steps": 0.1})
# do learning rate warmup in the first 20% steps.
predictor.fit(hyperparameters={"optimization.warmup_steps": 0.2})
optimization.patience¶
在没有改进的情况下,经过此数量的检查后停止训练。检查频率由 optimization.val_check_interval
控制。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.patience": 10})
# set patience to 5 checks
predictor.fit(hyperparameters={"optimization.patience": 5})
optimization.val_check_interval¶
在一个训练周期内检查验证集的频率。可以指定为浮点数或整数。
传递一个在范围 [0.0, 1.0] 内的浮点数,以在训练周期的某个部分之后进行检查。
传递一个整数以在固定数量的训练批次后进行检查。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.val_check_interval": 0.5})
# check validation set 4 times during a training epoch
predictor.fit(hyperparameters={"optimization.val_check_interval": 0.25})
优化.梯度裁剪算法¶
使用的梯度裁剪算法。支持通过值或范数来裁剪梯度。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.gradient_clip_algorithm": "norm"})
# clip gradients by value
predictor.fit(hyperparameters={"optimization.gradient_clip_algorithm": "value"})
优化.梯度裁剪值¶
梯度裁剪值,可以是绝对值或梯度范数,取决于optimization.gradient_clip_algorithm
的选择。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.gradient_clip_val": 1})
# cap the gradients to 5
predictor.fit(hyperparameters={"optimization.gradient_clip_val": 5})
优化.跟踪梯度范数¶
在训练过程中跟踪梯度的p-范数。可以设置为‘inf’表示无穷范数。如果使用自动混合精度(AMP),在记录梯度之前会取消缩放。
# default used by AutoMM (no tracking)
predictor.fit(hyperparameters={"optimization.track_grad_norm": -1})
# track the 2-norm
predictor.fit(hyperparameters={"optimization.track_grad_norm": 2})
optimization.log_every_n_steps¶
在步骤中记录日志的频率。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.log_every_n_steps": 10})
# log once every 50 steps
predictor.fit(hyperparameters={"optimization.log_every_n_steps": 50})
optimization.top_k¶
根据验证分数,选择前k个模型检查点进行模型平均。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.top_k": 3})
# use top 5 checkpoints
predictor.fit(hyperparameters={"optimization.top_k": 5})
optimization.top_k_average_method¶
使用什么策略来平均前k个模型检查点。
"greedy_soup"
: 尝试从最佳到最差依次将检查点添加到平均池中,如果平均检查点性能下降则停止。详情请参见论文。"uniform_soup"
: 将所有前k个检查点平均作为最终检查点。"best"
: 选择具有最佳验证性能的检查点。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.top_k_average_method": "greedy_soup"})
# average all the top k checkpoints
predictor.fit(hyperparameters={"optimization.top_k_average_method": "uniform_soup"})
优化.高效微调¶
参数高效微调的选项。参数高效微调意味着只微调一小部分参数,而不是整个预训练的主干。
"bit_fit"
: 仅偏置参数。详情请参见这篇论文。"norm_fit"
: 归一化参数 + 偏置参数。详情请参见这篇论文。"lora"
: LoRA 适配器。详情请参见 这篇论文。"lora_bias"
: LoRA 适配器 + 偏置参数。"lora_norm"
: LoRA 适配器 + 归一化参数 + 偏置参数。"ia3"
: IA3 算法。详情请参阅 这篇论文。"ia3_bias"
: IA3 + 偏置参数。"ia3_norm"
: IA3 + 归一化参数 + 偏置参数。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.efficient_finetune": None})
# finetune only bias parameters
predictor.fit(hyperparameters={"optimization.efficient_finetune": "bit_fit"})
# finetune with IA3 + BitFit
predictor.fit(hyperparameters={"optimization.efficient_finetune": "ia3_bias"})
optimization.skip_final_val¶
是否在训练信号停止后跳过最终验证。
# default used by AutoMM
predictor.fit(hyperparameters={"optimization.skip_final_val": False})
# skip the final validation
predictor.fit(hyperparameters={"optimization.skip_final_val": True})
环境¶
env.num_gpus¶
使用的GPU数量。如果给定-1,我们通过env.num_gpus = torch.cuda.device_count()
来计算GPU数量。
# by default, all available gpus are used by AutoMM
predictor.fit(hyperparameters={"env.num_gpus": -1})
# use 1 gpu only
predictor.fit(hyperparameters={"env.num_gpus": 1})
每个GPU的批量大小¶
每个GPU的批量大小。
# default used by AutoMM
predictor.fit(hyperparameters={"env.per_gpu_batch_size": 8})
# use batch size 16 per GPU
predictor.fit(hyperparameters={"env.per_gpu_batch_size": 16})
env.batch_size¶
在训练的每一步中使用的批量大小。如果env.batch_size
大于env.per_gpu_batch_size * env.num_gpus
,我们会在执行一次优化步骤之前累积梯度以达到有效的env.batch_size
。累积步骤通过env.batch_size // (env.per_gpu_batch_size * env.num_gpus)
计算。
# default used by AutoMM
predictor.fit(hyperparameters={"env.batch_size": 128})
# use batch size 256
predictor.fit(hyperparameters={"env.batch_size": 256})
环境评估批量大小比例¶
预测或评估使用更大的每GPU批量大小 env.per_gpu_batch_size * env.eval_batch_size_ratio
。
# default used by AutoMM
predictor.fit(hyperparameters={"env.eval_batch_size_ratio": 4})
# use 2x per gpu batch size during prediction or evaluation
predictor.fit(hyperparameters={"env.eval_batch_size_ratio": 2})
环境精度¶
支持双精度(64
, "64"
, "64-true"
)、单精度(32
, "32"
, "32-true"
)、bfloat16("bf16-mixed"
, "bf16-true"
)或float16("16-mixed"
, "16-true"
)精度训练。更多详情,请参考这里。
混合精度如 "16-mixed"
是结合使用32位和16位浮点数来减少模型训练期间的内存占用。这可以提高性能,在现代GPU上实现+3倍的加速。
# default used by AutoMM
predictor.fit(hyperparameters={"env.precision": "16-mixed"})
# use bfloat16 mixed precision
predictor.fit(hyperparameters={"env.precision": "bf16-mixed"})
env.num_workers¶
Pytorch数据加载器在训练中使用的worker进程数量。请注意,更多的worker并不总是带来加速,特别是当env.strategy = "ddp_spawn"
时。
更多详情,请参阅指南这里。
# default used by AutoMM
predictor.fit(hyperparameters={"env.num_workers": 2})
# use 4 workers in the training dataloader
predictor.fit(hyperparameters={"env.num_workers": 4})
env.num_workers_evaluation¶
Pytorch数据加载器在预测或评估时使用的工作进程数量。
# default used by AutoMM
predictor.fit(hyperparameters={"env.num_workers_evaluation": 2})
# use 4 workers in the prediction/evaluation dataloader
predictor.fit(hyperparameters={"env.num_workers_evaluation": 4})
环境策略¶
分布式训练模式。
"dp"
: 数据并行。"ddp"
: 分布式数据并行(基于python脚本)。"ddp_spawn"
: 分布式数据并行(基于spawn)。
详情请参见这里。
# default used by AutoMM
predictor.fit(hyperparameters={"env.strategy": "ddp_spawn"})
# use ddp during training
predictor.fit(hyperparameters={"env.strategy": "ddp"})
环境加速器¶
支持 "cpu"
, "gpu"
, 或 "auto"
(默认)。
在自动模式下,如果cpu和gpu都可用,gpu具有更高的优先级。
详情请参见这里。
# default used by AutoMM
predictor.fit(hyperparameters={"env.accelerator": "auto"})
# use cpu for training
predictor.fit(hyperparameters={"env.accelerator": "cpu"})
环境编译开启¶
是否通过torch.compile编译Pytorch模型。(默认False) 请注意,编译模型可能会花费一些时间。建议用于大型模型和长时间训练。
# default used by AutoMM
predictor.fit(hyperparameters={"env.compile.turn_on": False})
# turn on torch.compile
predictor.fit(hyperparameters={"env.compile.turn_on": True})
环境编译模式¶
可以是 “default”
, “reduce-overhead”
, “max-autotune”
或 “max-autotune-no-cudagraphs”
。
有关详细信息,请参阅 torch.compile。
# default used by AutoMM
predictor.fit(hyperparameters={"env.compile.mode": "default"})
# reduces the overhead of python with CUDA graphs, useful for small batches.
predictor.fit(hyperparameters={"env.compile.mode": “reduce-overhead”})
环境编译.动态¶
是否使用动态形状追踪(默认值为True)。详情请参阅torch.compile。
# default used by AutoMM
predictor.fit(hyperparameters={"env.compile.dynamic": True})
# assumes a static input shape across mini-batches.
predictor.fit(hyperparameters={"env.compile.dynamic": False})
环境编译后端¶
编译模型时使用的后端。详情请参阅torch.compile。
# default used by AutoMM
predictor.fit(hyperparameters={"env.compile.backend": "inductor"})
模型¶
模型名称¶
选择要使用的模型类型。
"hf_text"
: 来自 Huggingface 的预训练文本模型。"timm_image"
: 来自 TIMM 的预训练图像模型。"clip"
: 预训练的CLIP模型。"categorical_mlp"
: 用于分类数据的MLP。"numerical_mlp"
: 用于数值数据的MLP。"ft_transformer"
: FT-Transformer 用于表格(分类和数值)数据。"fusion_mlp"
: 基于MLP的多骨干网络特征融合。"fusion_transformer"
: 基于transformer的多骨干网络特征融合。"sam"
: 来自 Huggingface 的预训练 Segment Anything Model。
如果未检测到一种模态的数据,相关的模型类型将在训练中自动移除。
# default used by AutoMM
predictor.fit(hyperparameters={"model.names": ["hf_text", "timm_image", "clip", "categorical_mlp", "numerical_mlp", "fusion_mlp"]})
# use only text models
predictor.fit(hyperparameters={"model.names": ["hf_text"]})
# use only image models
predictor.fit(hyperparameters={"model.names": ["timm_image"]})
# use only clip models
predictor.fit(hyperparameters={"model.names": ["clip"]})
model.hf_text.checkpoint_name¶
指定一个由Hugginface AutoModel 支持的文本主干。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.checkpoint_name": "google/electra-base-discriminator"})
# choose roberta base
predictor.fit(hyperparameters={"model.hf_text.checkpoint_name": "roberta-base"})
model.hf_text.pooling_mode¶
Transformer架构的特征池化模式。
cls
: 使用cls特征向量来表示一个句子。mean
: 平均所有标记的特征向量来表示一个句子。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.pooling_mode": "cls"})
# using the mean pooling
predictor.fit(hyperparameters={"model.hf_text.pooling_mode": "mean"})
model.hf_text.tokenizer_name¶
选择文本分词器。建议使用默认的自动分词器。
hf_auto
: Huggingface 自动分词器.bert
: BERT tokenizer.electra
: ELECTRA 分词器.clip
: CLIP tokenizer.
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.tokenizer_name": "hf_auto"})
# using the tokenizer of the ELECTRA model
predictor.fit(hyperparameters={"model.hf_text.tokenizer_name": "electra"})
model.hf_text.max_text_len¶
设置最大文本长度。不同的模型可能允许不同的最大长度。如果model.hf_text.max_text_len
> 0,我们选择model.hf_text.max_text_len
和模型允许的最大长度之间的最小值。设置model.hf_text.max_text_len
<= 0将使用模型的最大长度。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.max_text_len": 512})
# set to use the length allowed by the tokenizer.
predictor.fit(hyperparameters={"model.hf_text.max_text_len": -1})
model.hf_text.insert_sep¶
是否在来自数据框不同列的文本之间插入SEP标记。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.insert_sep": True})
# use no SEP token.
predictor.fit(hyperparameters={"model.hf_text.insert_sep": False})
model.hf_text.text_segment_num¶
在标记序列中使用了多少个文本段。每个文本段都有一个token type ID。我们选择model.hf_text.text_segment_num
和模型使用的默认值之间的最小值。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.text_segment_num": 2})
# use 1 text segment
predictor.fit(hyperparameters={"model.hf_text.text_segment_num": 1})
model.hf_text.stochastic_chunk¶
如果样本的文本标记数大于model.hf_text.max_text_len
,是否随机截取一个文本块。如果为False,则从索引0开始截取到最大允许长度的标记序列。否则,随机采样一个起始索引来截取一个文本块。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.stochastic_chunk": False})
# select a stochastic text chunk if a text sequence is over-long
predictor.fit(hyperparameters={"model.hf_text.stochastic_chunk": True})
model.hf_text.text_aug_detect_length¶
仅在文本标记数不少于model.hf_text.text_aug_detect_length
时执行文本增强。
# default used by AutoMM
predictor.fit(hyperparameters={"model.hf_text.text_aug_detect_length": 10})
# Allow text augmentation for texts whose token number is no less than 5
predictor.fit(hyperparameters={"model.hf_text.text_aug_detect_length": 5})
model.hf_text.text_trivial_aug_maxscale¶
设置进行数据增强的文本标记的最大百分比。对于每个文本标记序列,我们从[0, model.hf_text.text_trivial_aug_maxscale
]中随机抽取一个百分比,并从四种简单的增强操作中选择一种,包括同义词替换、随机单词交换、随机单词删除和随机标点插入,来进行文本增强。
# by default, AutoMM doesn't do text augmentation
predictor.fit(hyperparameters={"model.hf_text.text_trivial_aug_maxscale": 0})
# Enable trivial augmentation by setting the max scale to 0.1
predictor.fit(hyperparameters={"model.hf_text.text_trivial_aug_maxscale": 0.1})
model.hf_text.gradient_checkpointing¶
是否开启梯度检查点以减少计算梯度时的内存消耗。有关梯度检查点的更多信息,请随时参考相关教程。
# by default, AutoMM doesn't turn on gradient checkpointing
predictor.fit(hyperparameters={"model.hf_text.gradient_checkpointing": False})
# Turn on gradient checkpointing
predictor.fit(hyperparameters={"model.hf_text.gradient_checkpointing": True})
model.ft_transformer.checkpoint_name¶
使用本地预训练权重或链接到预训练权重来初始化ft_transformer骨干。
# by default, AutoMM doesn't use pre-trained weights
predictor.fit(hyperparameters={"model.ft_transformer.checkpoint_name": None})
# initialize the ft_transformer backbone from local checkpoint
predictor.fit(hyperparameters={"model.ft_transformer.checkpoint_name": 'my_checkpoint.ckpt'})
# initialize the ft_transformer backbone from url of checkpoint
predictor.fit(hyperparameters={"model.ft_transformer.checkpoint_name": 'https://automl-mm-bench.s3.amazonaws.com/ft_transformer_pretrained_ckpt/iter_2k.ckpt'})
model.ft_transformer.num_blocks¶
ft_transformer 骨干中的变压器块数量。
# default used by AutoMM
predictor.fit(hyperparameters={"model.ft_transformer.num_blocks": 3})
# increase the number of blocks to 5 in ft_transformer
predictor.fit(hyperparameters={"model.ft_transformer.num_blocks": 5})
model.ft_transformer.token_dim¶
ft_transformer中分类和数值标记化后的标记维度。
# default used by AutoMM
predictor.fit(hyperparameters={"model.ft_transformer.token_dim": 192})
# increase the token dimension to 256 in ft_transformer
predictor.fit(hyperparameters={"model.ft_transformer.token_dim": 256})
model.timm_image.checkpoint_name¶
从TIMM中选择一个图像骨干网络。
# default used by AutoMM
predictor.fit(hyperparameters={"model.timm_image.checkpoint_name": "swin_base_patch4_window7_224"})
# choose a vit base
predictor.fit(hyperparameters={"model.timm_image.checkpoint_name": "vit_base_patch32_224"})
model.timm_image.train_transforms¶
在训练中增强图像。支持传递从以下支持的字符串列表中选择的字符串(resize_to_square
, resize_shorter_side
, center_crop
, random_resize_crop
, random_horizontal_flip
, random_vertical_flip
, color_jitter
, affine
, randaug
, trivial_augment
),或者传递可调用且可序列化的变换对象列表。例如,您可以使用torchvision的变换(https://pytorch.org/vision/stable/transforms.html)。
# default used by AutoMM
predictor.fit(hyperparameters={"model.timm_image.train_transforms": ["resize_shorter_side", "center_crop", "trivial_augment"]})
# use random resize crop and random horizontal flip
predictor.fit(hyperparameters={"model.timm_image.train_transforms": ["random_resize_crop", "random_horizontal_flip"]})
# or use a list of callable and pickle-able objects, e.g., torchvision transforms
predictor.fit(hyperparameters={"model.timm_image.train_transforms": [torchvision.transforms.RandomResizedCrop(224), torchvision.transforms.RandomHorizontalFlip()]})
model.timm_image.val_transforms¶
在验证/测试/部署中转换图像。类似于model.timm_image.train_transforms
,支持字符串列表或可调用且可序列化的对象来转换图像。
# default used by AutoMM
predictor.fit(hyperparameters={"model.timm_image.val_transforms": ["resize_shorter_side", "center_crop"]})
# resize image to square
predictor.fit(hyperparameters={"model.timm_image.val_transforms": ["resize_to_square"]})
# or use a list of callable and pickle-able objects, e.g., torchvision transforms
predictor.fit(hyperparameters={"model.timm_image.val_transforms": [torchvision.transforms.Resize((224, 224)]})
model.mmdet_image.checkpoint_name¶
指定一个由MMDetection支持的MMDetection模型。请使用“yolox_nano”、“yolox_tiny”、“yolox_s”、“yolox_m”、“yolox_l”或“yolox_x”来运行我们修改过的与Autogluon兼容的YOLOX模型。
# default used by AutoMM
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.checkpoint_name": "yolov3_mobilenetv2_8xb24-320-300e_coco"})
# choose YOLOX-L
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.checkpoint_name": "yolox_l"})
# choose DINO-SwinL
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.checkpoint_name": "dino-5scale_swin-l_8xb2-36e_coco"})
model.mmdet_image.output_bbox_format¶
输出边界框格式:
"xyxy"
: 输出 [x1,y1,x2,y2]。边界框通过角点表示,x1, y1 是左上角,x2, y2 是右下角。这是我们的默认输出格式。"xywh"
: 输出 [x1,y1,w,h]。边界框通过角点、宽度和高度表示,x1, y1 是左上角,w, h 是宽度和高度。
# default used by AutoMM
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.output_bbox_format": "xyxy"})
# choose xywh output format
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.output_bbox_format": "xywh"})
model.mmdet_image.frozen_layers¶
要冻结的层。所有包含此类子字符串的层将被冻结。
# default used by AutoMM, freeze nothing and update all parameters
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.frozen_layers": []})
# freeze the model's backbone
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.frozen_layers": ["backbone"]})
# freeze the model's backbone and neck
predictor = MultiModalPredictor(hyperparameters={"model.mmdet_image.frozen_layers": ["backbone", "neck"]})
model.sam.checkpoint_name¶
指定一个由Huggingface SAM 支持的SAM骨干网络。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.checkpoint_name": "facebook/sam-vit-huge"})
# choose SAM-Large
predictor.fit(hyperparameters={"model.sam.checkpoint_name": "facebook/sam-vit-large"})
# choose SAM-Base
predictor.fit(hyperparameters={"model.sam.checkpoint_name": "facebook/sam-vit-base"})
model.sam.train_transforms¶
在训练中增强图像。目前支持传递random_horizontal_flip
。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.train_transforms": ["random_horizontal_flip"]})
model.sam.img_transforms¶
处理输入图像以进行语义分割。目前支持传递resize_to_square
。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.img_transforms": ["resize_to_square"]})
model.sam.gt_transforms¶
处理用于语义分割的真实掩码。目前支持传递resize_gt_to_square
。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.gt_transforms": ["resize_gt_to_square"]})
model.sam.frozen_layers¶
在训练过程中冻结SAM的模块。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.frozen_layers": ["mask_decoder.iou_prediction_head", "prompt_encoder"]})
model.sam.num_mask_tokens¶
SAM的掩码解码器的掩码提议数量。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.num_mask_tokens": 1})
model.sam.ignore_label¶
指定一个被忽略的目标值,该值不参与训练损失和指标计算。
# default used by AutoMM
predictor.fit(hyperparameters={"model.sam.ignore_label": 255})
数据¶
data.image.missing_value_strategy¶
如何处理缺失的图像,打开失败的情况。
"skip"
: 跳过缺少图像的样本。"zero"
: 使用零图像替换缺失的图像。
# default used by AutoMM
predictor.fit(hyperparameters={"data.image.missing_value_strategy": "zero"})
# skip the image
predictor.fit(hyperparameters={"data.image.missing_value_strategy": "skip"})
data.text.normalize_text¶
是否对存在编码问题的文本进行规范化处理。如果为True,TextProcessor将运行一系列编码和解码以进行文本规范化。请参考Kaggle竞赛示例以应用文本规范化。
# default used by AutoMM
predictor.fit(hyperparameters={"data.text.normalize_text": False})
# turn on text normalization
predictor.fit(hyperparameters={"data.text.normalize_text": True})
data.categorical.convert_to_text¶
是否将分类数据视为文本。如果为True,则不会使用分类模型,例如"categorical_mlp"
和"categorical_transformer"
。
# default used by AutoMM
predictor.fit(hyperparameters={"data.categorical.convert_to_text": True})
# turn off the conversion
predictor.fit(hyperparameters={"data.categorical.convert_to_text": False})
data.numerical.convert_to_text¶
是否将数值数据转换为文本。如果为True,则不会使用数值模型,例如"numerical_mlp"
和"numerical_transformer"
。
# default used by AutoMM
predictor.fit(hyperparameters={"data.numerical.convert_to_text": False})
# turn on the conversion
predictor.fit(hyperparameters={"data.numerical.convert_to_text": True})
data.numerical.scaler_with_mean¶
如果为True,在缩放之前将数值数据(不包括数值标签)居中。
# default used by AutoMM
predictor.fit(hyperparameters={"data.numerical.scaler_with_mean": True})
# turn off centering
predictor.fit(hyperparameters={"data.numerical.scaler_with_mean": False})
数据数值标准化¶
如果为True,将数值数据(不包括数值标签)缩放到单位方差。
# default used by AutoMM
predictor.fit(hyperparameters={"data.numerical.scaler_with_std": True})
# turn off scaling
predictor.fit(hyperparameters={"data.numerical.scaler_with_std": False})
数据标签的数值标签预处理¶
如何处理回归任务中的数值标签。
"standardscaler"
: 通过去除均值并缩放到单位方差来标准化数值标签。"minmaxscaler"
: 通过将每个特征缩放到范围(0, 1)来转换数值标签。
# default used by AutoMM
predictor.fit(hyperparameters={"data.label.numerical_label_preprocessing": "standardscaler"})
# scale numerical labels to (0, 1)
predictor.fit(hyperparameters={"data.label.numerical_label_preprocessing": "minmaxscaler"})
data.pos_label¶
在二分类任务中的正标签。用户需要指定此标签以正确使用某些指标,例如roc_auc、average_precision和f1。
# default used by AutoMM
predictor.fit(hyperparameters={"data.pos_label": None})
# assume the labels are ["changed", "not changed"] and "changed" is the positive label
predictor.fit(hyperparameters={"data.pos_label": "changed"})
data.column_features_pooling_mode¶
如何将数据框中的多个特征列聚合成一个特征向量。目前,它仅适用于few_shot_classification
。
"concat"
: 将不同列的特征连接成一个长的特征向量。"mean"
: 对列特征进行平均,以便特征维度不会随着列数的增加而增加。
# default used by AutoMM
predictor.fit(hyperparameters={"data.column_features_pooling_mode": "concat"})
# use the mean pooling
predictor.fit(hyperparameters={"data.column_features_pooling_mode": "mean"})
data.mixup.turn_on¶
如果为True,则在训练中使用Mixup。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.turn_on": False})
# turn on Mixup
predictor.fit(hyperparameters={"data.mixup.turn_on": True})
data.mixup.mixup_alpha¶
Mixup alpha 值。如果 data.mixup.mixup_alpha
> 0,则 Mixup 处于激活状态。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.mixup_alpha": 0.8})
# set it to 1.0 to turn off Mixup
predictor.fit(hyperparameters={"data.mixup.mixup_alpha": 1.0})
data.mixup.cutmix_alpha¶
Cutmix alpha 值。如果 data.mixup.cutmix_alpha
> 0,则 Cutmix 处于激活状态。
# by default, Cutmix is turned off by using alpha 1.0
predictor.fit(hyperparameters={"data.mixup.cutmix_alpha": 1.0})
# turn it on by choosing a number in range (0, 1)
predictor.fit(hyperparameters={"data.mixup.cutmix_alpha": 0.8})
data.mixup.prob¶
如果启用,执行Mixup或Cutmix的概率。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.prob": 1.0})
# set probability to 0.5
predictor.fit(hyperparameters={"data.mixup.prob": 0.5})
data.mixup.switch_prob¶
当两者都激活时,切换到Cutmix而不是Mixup的概率。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.switch_prob": 0.5})
# set probability to 0.7
predictor.fit(hyperparameters={"data.mixup.switch_prob": 0.7})
data.mixup.mode¶
如何应用Mixup或Cutmix参数(按"batch"
,"pair"
(元素对),"elem"
(元素))。
更多详情请参见这里。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.mode": "batch"})
# use "pair"
predictor.fit(hyperparameters={"data.mixup.mode": "pair"})
data.mixup.label_smoothing¶
对混合标签张量应用标签平滑。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.label_smoothing": 0.1})
# set it to 0.2
predictor.fit(hyperparameters={"data.mixup.label_smoothing": 0.2})
data.mixup.turn_off_epoch¶
在达到这个数量的周期后停止Mixup或Cutmix。
# default used by AutoMM
predictor.fit(hyperparameters={"data.mixup.turn_off_epoch": 5})
# turn off mixup after 7 epochs
predictor.fit(hyperparameters={"data.mixup.turn_off_epoch": 7})
蒸馏器¶
distiller.soft_label_loss_type¶
当使用教师的输出(logits)来监督学生时,计算什么损失。
# default used by AutoMM for classification
predictor.fit(hyperparameters={"distiller.soft_label_loss_type": "cross_entropy"})
# default used by AutoMM for regression
predictor.fit(hyperparameters={"distiller.soft_label_loss_type": "mse"})
蒸馏器温度¶
在计算软标签损失之前,使用它来缩放教师和学生的logits(teacher_logits / temperature, student_logits / temperature)。
# default used by AutoMM for classification
predictor.fit(hyperparameters={"distiller.temperature": 5})
# set temperature to 1
predictor.fit(hyperparameters={"distiller.temperature": 1})
distiller.hard_label_weight¶
使用此权重缩放学生的硬标签(真实值)损失(hard_label_loss * hard_label_weight)。
# default used by AutoMM for classification
predictor.fit(hyperparameters={"distiller.hard_label_weight": 0.2})
# set not to scale the hard label loss
predictor.fit(hyperparameters={"distiller.hard_label_weight": 1})
distiller.soft_label_weight¶
使用此权重缩放学生的软标签(教师的输出)损失(soft_label_loss * soft_label_weight)。
# default used by AutoMM for classification
predictor.fit(hyperparameters={"distiller.soft_label_weight": 50})
# set not to scale the soft label loss
predictor.fit(hyperparameters={"distiller.soft_label_weight": 1})