ludwig KeyError: 'class_weights'

w51jfk4q  于 5个月前  发布在  其他
关注(0)|答案(6)|浏览(90)

从您提供的输出信息来看,问题出在Ray初始化失败。这可能是因为您的计算机上没有运行任何Ray示例。您可以尝试设置环境变量--addressRAY_ADDRESS,以指定要连接的Ray示例。例如:

export `--address`=your_ray_instance_address:6379

或者

export `RAY_ADDRESS`=your_ray_instance_address:6379

your_ray_instance_address替换为您的Ray示例的实际地址。然后再次运行实验,看看是否能够成功初始化。
这个错误是因为在训练模型时,损失函数(loss function)没有设置类别权重(class weights)。要解决这个问题,你需要在训练配置中添加class_weights参数。

解析:

  1. 在训练配置中找到class_weights参数;
  2. 设置一个包含类别权重的列表或元组。

代码示例:

{
  "text": { ... },
  "timeseries": { ... },
  "undersample_majority": None,
  "vector": { ... },
  "trainer": {
    "batch_size": 96,
    "checkpoints_per_epoch": 0,
    "decay": False,
    "decay_rate": 0.96,
    "decay_steps": 10000,
    "early_stop": 5,
    "epochs": 100,
    "eval_batch_size": None,
    "evaluate_training_set": True,
    "gradient_clipping": { ... },
    "increase_batch_size_eval_metric": "loss",
    "increase_batch_size_eval_split": "training",
    "increase_batch_size_on_plateau": 0,
    "increase_batch_size_on_plateau_max": 512,
    "increase_batch_size_on_plateau_patience": 5,
    "increase_batch_size_on_plateau_rate": 2.0,
    "learning_rate": ...,
    "learning_rate_scaling": ...,
    "learning_rate_warmup_epochs": ...,
    "optimizer": ...,
    ...
    'class_weights': [1.0,], // 根据实际情况设置类别权重列表或元组
    ...
}
4smxwvx5

4smxwvx51#

你好@jiangweiatgithub,你能分享一下mt_en_sch.yaml文件吗?这样我才能尝试重现错误。

svmlkihl

svmlkihl2#

当然可以 -
输入特征:

名称:英语
类型:文本
编码器:RNN
单元类型:LSTM
减少输出:空
预处理:
分词器:english_tokenize
输出特征:

名称:中文
类型:文本
解码器:生成器
单元类型:LSTM
注意力机制:Bahdanau
减少输入:空
#损失:
#类型:softmax_cross_entropy
预处理:
分词器:chinese_tokenize
训练:
批量大小:100

weylhg0b

weylhg0b3#

感谢jiangweiatgithub分享yaml文件。我们目前正在调查这个问题,并尝试重现它。你是否也能分享alt_en-US_zh-CN_200k.tsv?

nhhxz33t

nhhxz33t4#

@ShreyaR 对我来说,这似乎不是一个特定于数据集的问题,尽管 @jiangweiatgithub 如果我们能得到一个小样本(即前10行),我很乐意确认数据集格式肯定不是问题所在。
我这边的小更新:我无法在本地使用玩具文本到文本数据集重现这个问题。我怀疑这可能是一个特定于GPU的问题。

du7egjpx

du7egjpx5#

看起来你在使用Ludwig进行多语言翻译任务,但遇到了一个问题。根据你提供的错误信息,问题出在无法找到可用的Ray示例。这可能是因为你的系统上没有安装Ray库,或者环境变量设置不正确。

为了解决这个问题,你可以尝试以下步骤:

  1. 确保你已经安装了Ray库。如果没有,可以使用以下命令安装:
pip install ray
  1. 检查你的环境变量设置。确保$--address或`$`RAY_ADDRESS环境变量已经设置为正确的值。这个环境变量用于指定要连接到的Ray示例所在的节点。如果你不确定如何设置这个环境变量,可以参考Ray官方文档了解如何配置。

  2. 如果问题仍然存在,尝试重启计算机,然后再次运行你的Ludwig实验。
    这个query是一个关于训练模型的输出结果,包括数据集大小、训练和验证过程中的一些指标。这里没有提出具体的问题或需求,所以无法给出答案。
    翻译结果为:
    训练集:7.2068,0.1125
    验证集:7.3114,0.1056
    测试集:7.2788,0.1082

[图表]
train | 7.2068
├─────┼────────┼─────────────┤
validation | 7.3114
├─────┼────────┼─────────────┤
test | 7.2788
╘════════════╧════════╧══════════════════╛

[表格]
| Chinese | loss | token_accuracy |
|-------|---------|------------|
| train | 7.5391 | 0.1138 |
| validation | 7.6656 | 0.1051 |
| test | 7.6281 | 0.1082 |

[表格]
combined │ loss │
|-------|---------|
| train | 7.5391 |
| validation | 7.6656 |
| test | 7.6281 |
评估结果:

训练集:准确率 7.7347,token_accuracy 0.1138
验证集:准确率 7.8759,token_accuracy 0.1051
测试集:准确率 7.8361,token_accuracy 0.1082

综合验证集:准确率 7.9111,token_accuracy 0.1051
这个错误信息表示在运行过程中,CUDA显存不足。尝试分配1.90 GiB显存,但GPU 0上只有16.00 GiB的总容量,其中11.73 GiB已经分配,450.75 MiB空闲,总共有13.67 GiB的显存被PyTorch保留。如果保留的内存远大于已分配的内存,可以尝试设置max_split_size_mb以避免碎片化。具体请参考文档中的内存管理部分和PYTORCH_CUDA_ALLOC_CONF。
flvtvl50

flvtvl506#

你好@jiangweiatgithub,我们刚刚发布了v0.6版本,解决了Ray的一些问题。你能否尝试升级Ludwig的版本,看看ray init问题是否已经修复?

相关问题