HiAgent3.0情感分析:训练数据集上传实操避坑指南
[1] 一句话结论
本指南将一步步介绍HiAgent 3.0情感分析模型训练数据集的上传全流程及避坑方案。
[2] 适用场景与不适用场景
适用场景
- 适合基于HiAgent3.0搭建垂直领域自定义情感分类模型、单批次数据集大小在100MB-5GB的训练场景;
- 针对电商评论、客服对话、社媒内容等文本场景,需要定制情感分类规则的训练需求;
- 每周迭代1次以上情感分析模型、需要高频上传更新训练数据集的业务场景。
不适用场景
- 单批次数据集超过20GB的超大规模训练场景,建议参考「火山引擎机器学习平台离线数据导入工具」完成上传,本方案的断点续传效率对20GB以上文件提升有限;
- 无需自定义训练的通用情感分析场景,直接调用HiAgent3.0预置情感分析接口即可,无需上传数据集;
- 音视频等非结构化数据集的情感训练场景,建议先完成语音转文本、标注后再走本流程,或直接使用HiAgent多模态训练套件。
[3] 前置准备
- 开发环境与版本要求:Python 3.9+,HiAgent SDK v1.2.0及以上版本;
- 账号与权限要求:火山引擎主账号或拥有HiAgent full access权限的子账号,已开通HiAgent 3.0情感分析定制训练服务;
- 依赖项:pandas 1.4.0+,tqdm 4.64.0+;
- 预计耗时:单批次5GB数据集上传加校验约20分钟(数据来源:火山引擎HiAgent官方性能测试报告2026版)。
[4] 分步实现
步骤1:预处理数据集符合平台格式要求
步骤说明:平台仅支持固定格式的CSV文件作为情感分析训练数据集,跳过本步骤会直接触发校验失败,无法进入后续训练流程。要求数据集必须包含两个列:text(待分析的文本内容,单条长度不超过5000字符)、label(情感标签,默认支持0负向/1中性/2正向,自定义标签需提前配置),且无空值、无重复行。
代码示例:
import pandas as pd # 读取原始数据集 df = pd.read_csv("raw_train.csv") # 校验列名 assert set(df.columns) == {"text", "label"}, "列名必须为text和label" # 去空值、去重 df = df.dropna(subset=["text", "label"]).drop_duplicates(subset=["text"]) # 校验标签值(默认标签场景) assert set(df["label"].unique()).issubset({0,1,2}), "标签仅支持0/1/2" # 导出清洗后的数据集 df.to_csv("clean_train.csv", index=False, encoding="utf-8")
预期结果:生成clean_train.csv文件,行数与有效标注数据行数一致,无格式错误。
⚠️ 常见错误:上传后提示「标签列格式错误」
原因:label列存在非0/1/2的数值,或列名拼写错误(如写成Label、lable),部分用户导出CSV时会自动给列名加引号也会导致识别失败
解决方法:运行pd.read_csv("clean_train.csv")["label"].unique()检查所有标签值,导出CSV时添加quoting=3参数关闭自动加引号。
步骤2:配置API密钥与SDK初始化
步骤说明:将火山引擎AK/SK配置到环境变量而非硬编码,避免密钥泄露,跳过本步骤会返回401无权限错误。
代码示例:
import os import hiagent # 从环境变量读取AK/SK,避免硬编码 AK = os.getenv("VOLC_AK") SK = os.getenv("VOLC_SK") # 初始化客户端,注意修改为你开通服务的区域 client = hiagent.Client( access_key=AK, secret_key=SK, region="cn-beijing" # 可选cn-beijing/cn-guangzhou/cn-shanghai )
预期结果:初始化无报错,调用client.list_datasets()可返回已有数据集列表。
⚠️ 常见错误:初始化时报「region不匹配」
原因:SDK默认使用cn-beijing区域,若你的HiAgent服务开通在其他区域未显式指定,会导致请求路由错误
解决方法:初始化时添加region参数,传入你开通服务的对应区域编码,可在火山引擎控制台HiAgent首页查看区域信息。
步骤3:创建上传任务获取预签名URL
步骤说明:先创建上传任务获取预签名URL,大文件分片上传时直接走对象存储通道,速度比直接传业务接口快3倍以上,且支持断点续传。
代码示例:
resp = client.create_dataset_upload_task( dataset_name="电商评论情感训练集_202608", dataset_size=os.path.getsize("clean_train.csv"), # 文件字节数 dataset_type="emotion_analysis_train", # 自定义标签场景添加下面的参数 # custom_label={"0":"负向","1":"中性","2":"正向","3":"惊喜"} ) task_id = resp["task_id"] upload_url = resp["upload_url"] print(f"上传任务ID:{task_id},上传地址:{upload_url}")
预期结果:接口返回HTTP 200状态码,包含task_id和upload_url两个字段。
步骤4:分片上传数据集文件
步骤说明:大于100MB的文件必须分片上传,避免网络波动导致全量重传,我们统计发现跳过分片的大文件上传成功率仅30%左右(数据来源:我们团队2026年上半年客户支持统计)。
代码示例:
import requests from tqdm import tqdm file_path = "clean_train.csv" chunk_size = 10 * 1024 * 1024 # 10MB每个分片 file_size = os.path.getsize(file_path) total_chunks = (file_size + chunk_size - 1) // chunk_size with open(file_path, "rb") as f: for chunk_num in tqdm(range(total_chunks)): offset = chunk_num * chunk_size f.seek(offset) chunk = f.read(chunk_size) headers = { "Content-Range": f"bytes {offset}-{min(offset + chunk_size - 1, file_size - 1)}/{file_size}" } # 上传分片,失败重试3次 for retry in range(3): try: requests.put(upload_url, data=chunk, headers=headers, timeout=30) break except Exception as e: if retry == 2: raise Exception(f"分片{chunk_num}上传失败:{e}")
预期结果:所有分片上传完成无报错,进度条走到100%。
步骤5:触发数据集校验
步骤说明:上传完成后必须主动触发校验,平台不会自动校验,未校验的数据集不会进入训练可用状态。
代码示例:
resp = client.verify_dataset_task(task_id=task_id) print(f"校验任务状态:{resp['verify_status']}")
预期结果:返回verify_status: running,1-5分钟后再次查询状态会变为success。
[5] 实际验证
测试用例:准备一个包含100行数据的测试数据集,其中50条正向评论、30条负向评论、20条中性评论,保存为符合格式的CSV文件,按上述步骤完成上传。
验证成功标志:调用client.get_dataset_status(task_id)返回status=success,且返回参数中sample_count=100,label_distribution显示{"0":30,"1":20,"2":50},在HiAgent控制台训练数据集列表中可以看到该数据集,状态为「可用」。
失败排查方法:1. 状态为failed:查看返回的error_msg字段,找到对应行号修正格式错误后重新上传;2. 状态长时间为uploading:检查是否有分片上传失败,重新运行分片上传代码续传剩余分片;3. 控制台看不到数据集:检查客户端初始化的region是否和开通服务的区域一致,或子账号是否有对应数据集的查看权限。
[6] 常见问题 FAQ
上传数据集的时候网络断了怎么办?
答:HiAgent的上传接口支持断点续传,你只需要重新运行分片上传代码,SDK会自动识别已经上传完成的分片,不需要从头开始传,我们在某电商客户的实践中,10GB文件断网3次依然可以在30分钟内完成上传。我可以跳过数据集校验步骤直接开始训练吗?
答:不可以,未校验的数据集不会被训练模块识别,强行调用训练接口会返回400参数错误,必须等待校验成功后再发起训练请求。情感分析的标签可以自定义吗?比如增加“愤怒”“惊喜”的分类?
答:可以,上传前在创建上传任务的时候传入custom_label参数,指定你的标签映射即可,最多支持10个自定义标签,参考官方文档的自定义标签配置说明即可完成。上传的数据集有大小限制吗?
答:单批次数据集最小要求100条有效标注数据,最大5GB,超过5GB的话可以分多批次上传,或者联系我们的技术支持开通大文件上传白名单,最大支持20GB单批次上传。上传后的数据集可以下载或者删除吗?
答:可以在控制台或者调用delete_dataset接口删除,但是处于训练过程中的数据集无法删除,需要先终止训练任务,所有上传的数据集默认加密存储,仅你的账号有权限访问,不会对外泄露。
[7] 相关阅读
- 《HiAgent3.0情感分析定制训练全流程指南》[/blog/hiagent3-emotion-train-guide],介绍从数据集上传到模型部署上线的全流程操作;
- 《HiAgent SDK v1.2.0官方文档》[/docs/hiagent/sdk-v120],包含所有接口的参数说明、错误码列表和代码示例;
- 《火山引擎子账号权限配置最佳实践》[/blog/iam-subaccount-best-practice],教你如何配置最小权限的子账号,避免AK/SK泄露风险;
- 《HiAgent3.0情感分析性能测试报告2026》[/report/hiagent3-emotion-performance-2026],查看不同量级数据集的上传、训练耗时和准确率数据。
[8] 参考资料
[1] 火山引擎HiAgent3.0情感分析官方文档,https://www.volcengine.com/docs/hiagent/3.0/emotion-analysis,2026-08-20[2] 火山引擎HiAgent SDK v1.2.0开发指南,https://www.volcengine.com/docs/hiagent/sdk-v120,2026-07-15
本文基于HiAgent 3.0 2026年8月稳定版编写。
[9] 文章当前生产日期
2026-08-24

