本文档面向需要在 RunPod、Jupyter、Modal、Stable Diffusion、ComfyUI、LangChain 或自建训练容器中接入溯仑智算存储服务的团队,重点说明接入参数准备、模型与数据集目录规划、任务启动阶段的输入拉取、任务结束后的结果回写,以及训练、推理、知识库和自动化工作流的统一实施方式。
在普通 Web 场景里,存储服务更多承担上传下载和素材归档;但在 AI 场景里,它往往同时承担模型仓、数据集仓、工作流中转站和结果归档仓的角色。只要模型目录、数据目录、结果目录和权限边界没有提前规划清楚,后续训练、推理、知识库处理和多人协作就很容易出现路径混乱、结果覆盖或回写失败的问题。
这篇文档更关注正式使用时真正会遇到的问题,例如接入参数怎么准备、不同平台怎么读取模型和数据、任务结束后怎么统一回写结果,以及如何让不同容器、不同任务和不同团队都围绕同一套文件路径与接入方式长期稳定运行。
AI 环境接入最常用的控制台位置同样是访问密钥和存储桶。先把这两块信息准备清楚,再继续配置任务环境变量、下载输入和回写结果,会更适合长期维护。
建议把溯仑智算存储服务作为外部素材仓。容器启动时先通过环境变量加载接入参数,再从指定桶拉取数据集或模型文件,任务结束后把输出结果、日志和报表统一回写到结果桶。这样镜像更轻,环境切换和任务复跑也更方便。
建议把 checkpoint、LoRA、VAE、ControlNet 等模型素材统一放在存储服务里。工作流容器启动后按需拉取到本地缓存目录,生成结果再回写到 outputs/ 或 results/ 前缀,既方便换模型,也方便多人协作和版本管理。
文档原件、切片结果、向量化前的中间文件都可以先放入存储服务,再由任务系统按路径读取。这样不同解析器、Embedding 服务和索引任务可以共享同一批源数据,也方便把原始文件、处理中间结果和最终索引文件拆分管理。
无论是训练日志、推理图片、评估报表还是分片中间产物,都建议统一回写到 results/ 或 outputs/ 前缀。这样后续无论是控制台下载、业务系统展示、审计追踪还是生命周期清理,都有明确的数据落点。
重点是启动时同步模型和数据集、运行中按路径读取输入、结束后把结果和日志回写。最怕的问题不是下载慢,而是目录规划混乱,导致不同任务互相覆盖。
重点是模型资产管理。checkpoint、LoRA、VAE、ControlNet 建议分目录或分桶管理,容器启动时按需拉取到本地缓存,再由工作流引用。
重点是原始文档、切片结果、向量化中间文件、最终索引输入的分层管理。存储服务在这里更像一个统一素材仓和处理中转层。
重点是实验数据、样本文件、导出报表和中间模型统一归档。这样单人实验与团队协作都能共用同一套输入输出路径。
重点是把一次性任务和长期存储分离。容器只负责计算,模型、数据集和结果始终回到存储服务,便于复跑和迁移。
下面是一种常见且容易维护的目录结构。你不一定要完全照搬,但强烈建议至少把模型、数据集、输入、输出和日志分开。
models/ base/ lora/ controlnet/ datasets/ raw/ cleaned/ inputs/ outputs/ logs/
不管你使用 RunPod、Jupyter、Modal 还是自建训练机,建议都用统一环境变量注入存储参数。这样脚本、Notebook、任务平台和训练节点都能复用同一套读取方式。
SURUN_S3_ENDPOINT=https://your-s3-endpoint SURUN_ACCESS_KEY_ID=your-access-key SURUN_SECRET_ACCESS_KEY=your-secret-key SURUN_MODELS_BUCKET=training-assets SURUN_RESULTS_BUCKET=training-results
容器刚启动时,只下载当前任务真正需要的模型或数据集,不要一次性把全部资产拉满。
把 prompt、文档、待训练样本、控制图或素材文件放进固定输入目录,任务内部只读这个目录。
把图片、报表、日志、权重、切片结果统一回写到结果桶或指定 prefix,便于后续后台查看与审计。
若当前环境不支持直接挂载,也可以通过启动脚本在任务开始前把模型或数据集同步到本地工作目录。
import os
import boto3
from pathlib import Path
client = boto3.client(
's3',
endpoint_url=os.environ['SURUN_S3_ENDPOINT'],
aws_access_key_id=os.environ['SURUN_ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['SURUN_SECRET_ACCESS_KEY'],
region_name='auto',
)
Path('/workspace/models').mkdir(parents=True, exist_ok=True)
client.download_file('training-assets', 'models/base/model.safetensors', '/workspace/models/model.safetensors')适合实验、数据清洗和分析验证。建议在 notebook 启动后先同步数据集,再把清洗结果、分析报表和中间文件统一上传回存储服务。
import os
import boto3
from pathlib import Path
session = boto3.session.Session()
client = session.client(
's3',
endpoint_url=os.environ['SURUN_S3_ENDPOINT'],
aws_access_key_id=os.environ['SURUN_ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['SURUN_SECRET_ACCESS_KEY'],
region_name='auto',
)
Path('./datasets').mkdir(exist_ok=True)
client.download_file(
'training-assets',
'datasets/project-a/train.csv',
'./datasets/train.csv',
)
print('dataset ready')适合按函数或任务执行训练、推理和批处理。核心原则是:计算环境短生命周期,模型、数据集和结果长期保存在存储服务。
import modal
import os
import boto3
app = modal.App('surun-training-job')
image = modal.Image.debian_slim().pip_install('boto3')
@app.function(image=image, timeout=60 * 60)
def run_training():
client = boto3.client(
's3',
endpoint_url=os.environ['SURUN_S3_ENDPOINT'],
aws_access_key_id=os.environ['SURUN_ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['SURUN_SECRET_ACCESS_KEY'],
region_name='auto',
)
client.download_file(
'training-assets',
'models/base/model.safetensors',
'/tmp/model.safetensors',
)
# 这里执行训练或推理逻辑
client.upload_file(
'/tmp/output.json',
'training-results',
'outputs/modal/job-001/output.json',
)适合长期运行的 GPU 节点或内网训练服务器。建议把下载输入、运行任务、上传结果拆成三个明确阶段,便于复跑和问题定位。
#!/usr/bin/env bash set -euo pipefail python scripts/download_inputs.py --bucket training-assets --prefix datasets/project-a --target /srv/jobs/current/datasets python scripts/run_training.py --config /srv/jobs/current/config.yaml python scripts/upload_outputs.py --source /srv/jobs/current/outputs --bucket training-results --prefix outputs/self-hosted/job-001
推理完成后,建议把图片、日志、报表统一回写到结果桶,方便后续在业务后台查看、下载和审计。
client.upload_file(
'/workspace/outputs/final.png',
'training-results',
'outputs/2026/06/final.png',
)不一定。很多场景直接在启动时同步模型或数据集就够了,关键是把输入和输出路径收口统一,便于容器切换与结果回写。
建议按模型类型和版本拆目录,例如 models/base/、models/lora/、models/controlnet/,并在容器启动时按需同步到本地缓存。
建议分开。原始文档、切片结果、向量化前中间文件最好使用不同前缀,这样做调试、重跑和清理都更方便。
文档中心帮助你完成接入,客户服务页帮助你了解采购、支持与服务信息。