如何在Amazon SageMaker CatBoost训练中设置或获取最优学习率?
SageMaker默认CatBoost容器的学习率自动设置方案
方法1:让CatBoost自动计算学习率
SageMaker默认CatBoost容器确实把learning_rate默认设为0.03,但你可以通过传递超参数覆盖这个值,实现和本地v1.2环境一致的自动计算逻辑:
- 创建SageMaker CatBoost Estimator时,显式将
learning_rate设为'auto':
from sagemaker.catboost import CatBoost estimator = CatBoost( role="your-iam-role", instance_count=1, instance_type="ml.m5.xlarge", hyperparameters={ "learning_rate": "auto", # 补充其他训练所需超参数 } )
这样CatBoost会根据输入数据自动选择合适的学习率,和本地行为对齐。
方法2:预计算学习率后传入
如果需要先在本地确认学习率再用于SageMaker训练:
- 在本地环境获取自动计算的学习率:
from catboost import Pool, CatBoostClassifier import pandas as pd # 加载本地训练数据 train_data = pd.read_csv("train_data.csv") train_pool = Pool(train_data.drop("target", axis=1), train_data["target"]) # 不指定learning_rate,让模型自动计算 model = CatBoostClassifier(iterations=200) model.fit(train_pool) auto_learning_rate = model.get_params()["learning_rate"]
- 将该值作为超参数传入SageMaker:
estimator = CatBoost( role="your-iam-role", instance_count=1, instance_type="ml.m5.xlarge", hyperparameters={ "learning_rate": auto_learning_rate, # 其他超参数 } )
重要提示
以上两种方案都无需自定义Docker镜像,直接使用SageMaker官方提供的CatBoost容器即可解决问题。
内容的提问来源于stack exchange,提问作者Dudelstein
相关产品推荐
相关产品推荐

