执行dvc exp run --queue时遇UTF-8解码错误,求解决
dvc exp run --queue的UTF-8解码错误 可能原因
错误提示的'utf-8' codec can't decode byte 0xc4说明DVC在处理数据时遇到了非UTF-8编码的字符(0xc4对应ISO-8859-1中的Ä字符),常见于参数、路径或DVC内部数据库中存在不符合UTF-8标准的内容。
解决方案
检查参数文件的字符编码
打开params.yaml(或其他参数文件),确认model_training.pools下的所有字段值(尤其是item.train.model_name)是否包含非UTF-8字符(如带重音的拉丁字母、非标准符号)。将这些字符替换为UTF-8兼容的内容,或确保文件本身以UTF-8编码保存。验证路径与文件名
检查dvc.yaml中定义的输出路径(如models/=${item.train.model_name})是否会生成包含非UTF-8字符的文件名。如果model_name包含特殊字符,修改为纯ASCII或UTF-8合规的名称。清理DVC实验数据库
DVC的实验数据存储在.dvc/experiments.db文件中,若该文件存在损坏的非UTF-8数据,可尝试删除该文件(操作前建议备份),然后重新执行dvc exp run --queue,DVC会自动重建数据库。升级DVC版本
你使用的DVC 2.37.0是较旧的版本,该版本可能存在UTF-8处理的已知bug。执行pip install --upgrade dvc升级到最新稳定版,再重试队列命令。检查命令变量展开内容
确认${item.train}展开后的命令参数是否包含非UTF-8字符。可以先手动执行python pipeline_scripts/train.py加上完整参数,验证命令本身是否能正常运行,排除参数内容的编码问题。
内容的提问来源于stack exchange,提问作者Dima

