# ArkTrain **Repository Path**: leejersey/ark-train ## Basic Information - **Project Name**: ArkTrain - **Description**: 用火山方舟来训练是否认识空调的型号等相关信息 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-19 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔧 ArkTrain - 二手空调智能评估模型微调工具 > 基于火山引擎方舟平台的多模态大模型微调工具集,专注于二手空调图像识别与价值评估。 --- ## 📖 目录 - [项目简介](#-项目简介) - [系统架构](#-系统架构) - [环境准备](#-环境准备) - [快速开始](#-快速开始) - [详细使用指南](#-详细使用指南) - [文件说明](#-文件说明) - [常见问题](#-常见问题) --- ## 🎯 项目简介 本项目是一套完整的**多模态大模型微调工作流**,用于训练一个能够: - 🖼️ **识别空调图片** - 分析空调品牌、型号、外观成色 - 💰 **评估二手价值** - 根据图片和价格给出购买建议 - 💬 **专家式对话** - 模拟老师傅的专业分析口吻 ### 工作流程概览 ```mermaid flowchart LR A[📊 CSV数据] --> B[🔄 trans.py
格式转换] B --> C[📤 upload_to_tos.py
图片上传] C --> D[☁️ TOS存储] D --> E[📝 upload_jsonl.py
JSONL上传] E --> F[🤖 方舟平台微调] F --> G[🧪 test_train.py
模型测试] ``` --- ## 🏗️ 系统架构 ### 核心组件 | 组件 | 文件 | 功能 | |------|------|------| | 数据转换器 | `trans.py` | CSV → JSONL 格式转换 | | 图片上传器 | `upload_to_tos.py` | 下载图片并上传至 TOS | | JSONL 上传器 | `upload_jsonl.py` | 修复格式并上传训练数据 | | 连接测试器 | `test_tos_connection.py` | 诊断 TOS 连接问题 | | 模型测试器 | `test_train.py` | 测试微调后的模型 | ### 技术栈 - **Python 3.8+** - **火山引擎 TOS SDK** (`tos`) - 对象存储 - **火山引擎 Ark SDK** (`volcenginesdkarkruntime`) - 模型调用 - **Pandas** - 数据处理 - **python-dotenv** - 环境变量管理 --- ## 🔧 环境准备 ### 1. 安装 Python 依赖 ```bash pip install pandas tos python-dotenv volcenginesdkarkruntime requests ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env` 并填入您的配置: ```bash cp .env.example .env ``` 编辑 `.env` 文件: ```env # ==================== 必填配置 ==================== # 火山引擎访问密钥 (从火山引擎控制台获取) VOLC_ACCESS_KEY=AKXXXXXXXXXXXXXXXXXX VOLC_SECRET_KEY=SKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # TOS 存储桶名称 (需要先在控制台创建) TOS_BUCKET_NAME=your-bucket-name # ==================== 可选配置 ==================== # TOS 区域配置 (默认北京) TOS_ENDPOINT=tos-cn-beijing.volces.com TOS_REGION=cn-beijing # 输入输出文件 INPUT_CSV=goofish-2026-01-16.csv OUTPUT_JSONL=volc_multimodal_train.jsonl # ==================== 模型测试配置 ==================== # 方舟平台 API Key (从方舟控制台获取) ARK_API_KEY=your-ark-api-key # 微调后的模型端点 ID ENDPOINT_ID=ep-xxxxxxxxxxxxxxxx ``` ### 3. 获取密钥说明 | 密钥 | 获取位置 | |------|----------| | `VOLC_ACCESS_KEY` / `VOLC_SECRET_KEY` | [火山引擎控制台](https://console.volcengine.com/iam/keymanage/) → IAM → 密钥管理 | | `TOS_BUCKET_NAME` | [TOS 控制台](https://console.volcengine.com/tos/) → 创建存储桶 | | `ARK_API_KEY` | [方舟控制台](https://console.volcengine.com/ark/) → API Key 管理 | | `ENDPOINT_ID` | 方舟控制台 → 模型推理 → 接入点管理 | --- ## 🚀 快速开始 ### 完整工作流(5 步完成微调) ```bash # 步骤 1: 测试 TOS 连接 python test_tos_connection.py # 步骤 2: 转换 CSV 数据为 JSONL (可选,用于本地预览) python trans.py # 步骤 3: 上传图片到 TOS 并生成训练数据 python upload_to_tos.py # 步骤 4: 修复并上传 JSONL 文件 python upload_jsonl.py # 步骤 5: 在方舟平台创建微调任务... # (见下方详细指南) # 步骤 6: 测试微调后的模型 python test_train.py test_ac.jpg ``` --- ## 📚 详细使用指南 ### 阶段一:数据准备 #### 1.1 准备 CSV 数据源 CSV 文件需包含以下列(以闲鱼爬取数据为例): | 列名 | 说明 | 示例 | |------|------|------| | `feeds-image--TDRC4fV1 src` | 商品图片 URL | `https://...jpg` | | `main-title--sMrtWSJa` | 商品标题 | `格力 1.5P 变频空调` | | `number--NKh1vXWM` | 价格 | `580` | | `text--MaM9Cmdn` | 所在地 | `北京朝阳` | | `cpv--R1RkOhUI` | 标签1 | `品牌:格力` | | `cpv--R1RkOhUI (2)` | 标签2 | `成色:9成新` | | `cpv--R1RkOhUI (3)` | 标签3 | `类型:变频` | #### 1.2 运行数据转换(可选预览) ```bash python trans.py ``` 此脚本将 CSV 转换为火山引擎格式的 JSONL,生成 `volcengine_finetune_data.jsonl`。 > **注意**:此脚本生成的数据使用原始图片 URL,仅供本地预览。正式训练需使用 `upload_to_tos.py`。 --- ### 阶段二:上传数据到 TOS #### 2.1 测试 TOS 连接 首次使用请先测试连接: ```bash python test_tos_connection.py ``` 成功输出示例: ``` ============================================================ 火山引擎 TOS 连接测试 ============================================================ ✅ tos SDK 已安装,版本: 2.x.x ✅ TOS 客户端创建成功 ✅ API 调用成功!找到 1 个存储桶: - your-bucket-name ✅ 上传测试成功! ✅ 测试文件已删除 ============================================================ 测试完成 ============================================================ ``` #### 2.2 上传图片并生成训练数据 ```bash python upload_to_tos.py ``` 此脚本会: 1. 读取 CSV 中的图片 URL 2. 下载每张图片 3. 上传到 TOS 的 `images/` 目录 4. 生成使用 TOS 路径(`tos://bucket/path`)的 JSONL 5. 自动上传 JSONL 到 TOS 根目录 #### 2.3 上传修复后的 JSONL(如需) 如果之前的 JSONL 格式有问题,使用此脚本修复并重新上传: ```bash python upload_jsonl.py ``` 修复内容: - `type: image` → `type: image_url` - `image_url: "url"` → `image_url: {"url": "..."}` --- ### 阶段三:在方舟平台创建微调任务 1. 登录 [火山引擎方舟控制台](https://console.volcengine.com/ark/) 2. **创建数据集** - 进入「数据管理」→「数据集」 - 新建数据集,类型选择「TOS」 - 填入 TOS 路径:`tos://your-bucket/volc_multimodal_train.jsonl` 3. **创建微调任务** - 进入「模型训练」→「微调任务」 - 选择基座模型(如 `doubao-vision-pro`) - 关联上一步创建的数据集 - 配置训练参数(推荐默认) - 启动训练 4. **创建推理端点** - 训练完成后,进入「模型推理」→「接入点管理」 - 基于微调模型创建端点 - 记录端点 ID (`ep-xxxx`) --- ### 阶段四:测试微调模型 #### 4.1 配置端点 ID 在 `.env` 中添加: ```env ARK_API_KEY=your-ark-api-key ENDPOINT_ID=ep-xxxxxxxxxx ``` #### 4.2 运行测试 ```bash # 使用本地图片测试 python test_train.py test_ac.jpg # 或使用任意空调图片 python test_train.py path/to/your/ac_image.jpg ``` 成功输出示例: ``` 🖼️ 使用本地图片: test_ac.jpg 🤖 空调专家正在看图... 📡 使用模型: ep-xxxxxxxxxx 💬 专家回复: 【物品识别】:这是一台格力1.5P变频空调... 【成色分析】:外观保持良好,约8-9成新... 【购买建议】:这个价格比较合理,建议确认制冷效果... ``` --- ## 📁 文件说明 ``` ArkTrain/ ├── 📄 .env.example # 环境变量模板 ├── 📄 .env # 实际配置(需自行创建) ├── 📄 README.md # 本文档 │ ├── 🐍 trans.py # CSV → JSONL 转换器(本地预览) ├── 🐍 upload_to_tos.py # 图片上传 + 训练数据生成 ├── 🐍 upload_jsonl.py # JSONL 格式修复 + 上传 ├── 🐍 test_tos_connection.py # TOS 连接诊断 ├── 🐍 test_train.py # 微调模型测试 │ ├── 📊 goofish-2026-01-16.csv # 示例 CSV 数据 ├── 📝 volcengine_finetune_data.jsonl # trans.py 输出 ├── 📝 volc_multimodal_train.jsonl # upload_to_tos.py 输出 │ └── 🖼️ test_ac.jpg # 测试用空调图片 ``` ### 脚本详情 #### `trans.py` - 数据格式转换器 - **输入**:CSV 文件(闲鱼商品数据) - **输出**:`volcengine_finetune_data.jsonl` - **特点**:保留原始图片 URL,适合本地预览数据格式 - **生成内容**:自动根据价格生成购买建议话术 #### `upload_to_tos.py` - 完整数据处理管道 - **输入**:CSV 文件 - **输出**: - TOS 上的图片(`images/` 目录) - 本地 + TOS 上的 JSONL 文件 - **特点**: - 下载原图并重新上传至 TOS - 生成 `tos://` 格式的图片路径 - 自动上传训练数据 #### `upload_jsonl.py` - JSONL 修复上传器 - **功能**:修复常见的格式问题并上传 - **修复项**: - `type: image` → `type: image_url` - 简单字符串 URL → 对象格式 `{"url": "..."}` #### `test_tos_connection.py` - 连接诊断工具 - **测试项**: 1. SDK 安装检查 2. 客户端创建 3. 列出存储桶 4. 上传/删除测试文件 #### `test_train.py` - 模型测试工具 - **输入**:本地图片路径 - **功能**: - 图片转 Base64 - 调用微调后的模型 API - 支持自动重试(应对 429 错误) --- ## ❓ 常见问题 ### Q1: SignatureDoesNotMatch 错误 **原因**:AK/SK 配置错误或有多余空格 **解决方案**: 1. 运行 `python test_tos_connection.py` 诊断 2. 检查 `.env` 中的 AK/SK 是否有多余空格 3. 确认密钥是否正确复制 ### Q2: 图片下载失败 **原因**:原图 URL 有防盗链或已失效 **解决方案**: - 脚本已添加 User-Agent 伪装 - 失败的图片会被跳过,不影响整体流程 ### Q3: 模型返回 429 错误 **原因**:API 调用频率超限 **解决方案**: - `test_train.py` 已内置重试机制 - 如持续出错,请稍后再试 ### Q4: JSONL 格式验证失败 **原因**:图片类型格式不符合要求 **解决方案**: - 运行 `python upload_jsonl.py` 自动修复 - 确保使用 `image_url` 类型而非 `image` ### Q5: 如何添加更多训练数据? 1. 准备新的 CSV 文件 2. 修改 `.env` 中的 `INPUT_CSV` 变量 3. 重新运行 `python upload_to_tos.py` 4. 在方舟平台更新数据集 --- ## 📝 版本历史 | 版本 | 日期 | 更新内容 | |------|------|----------| | v1.0 | 2026-01-16 | 初始版本,完整工作流 | --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! --- ## 📄 许可证 MIT License --- > 💡 **提示**:如有问题,请先运行 `test_tos_connection.py` 进行诊断。