资讯动态

DAMO-YOLO开源大模型教程:ModelScope缓存路径自定义与离线部署技巧

发布时间:2026/8/7 11:39:30 来源:尧图企业网站定制
DAMO-YOLO开源大模型教程ModelScope缓存路径自定义与离线部署技巧1. 引言为什么你需要关注缓存路径和离线部署如果你正在使用ModelScope上的AI模型特别是像DAMO-YOLO这样的高性能检测模型可能会遇到两个头疼的问题第一个问题模型下载太慢每次都要重新下载浪费时间和流量。第二个问题服务器没有外网或者网络环境不稳定模型根本下不下来。这两个问题的根源都指向了ModelScope的默认缓存机制。默认情况下模型会下载到系统的默认缓存目录而且每次运行都需要联网检查。对于生产环境或者网络受限的场景这显然不够友好。今天我要分享的就是如何彻底解决这两个问题。通过自定义缓存路径和离线部署技巧你可以把模型文件放在指定的位置方便管理和备份实现真正的离线运行完全不依赖网络在多台服务器间快速部署无需重复下载以DAMO-YOLO手机检测模型为例它的AP0.5达到88.8%推理速度仅3.83ms性能非常出色。但如果没有正确的部署方法再好的模型也用不起来。接下来我会手把手带你完成从环境准备到离线部署的全过程让你真正掌握这个实用技能。2. 环境准备与基础概念2.1 你需要准备什么在开始之前确保你的环境满足以下要求硬件要求CPU4核以上推荐8核内存8GB以上推荐16GB磁盘空间至少2GB可用空间GPU可选有GPU会更快支持CUDA 11.0软件要求操作系统Ubuntu 18.04 / CentOS 7本文以Ubuntu 20.04为例Python3.8推荐3.8或3.9包管理工具pip最新版本网络要求首次部署需要联网下载模型后续可离线如果完全离线需要提前准备好模型文件2.2 理解ModelScope的缓存机制在深入操作之前先简单了解一下ModelScope是怎么管理模型文件的默认缓存路径 ModelScope默认会把模型下载到用户目录下的.cache/modelscope/hub文件夹。比如在Linux系统上路径通常是~/.cache/modelscope/hub缓存结构 每个模型都有一个唯一的ID比如damo/cv_tinynas_object-detection_damoyolo_phone在缓存目录下会按照这个ID创建对应的文件夹结构。问题所在路径不固定不同用户的缓存路径可能不同权限问题某些环境下可能没有写入权限管理困难模型文件散落在各处不好统一管理离线不可用默认需要联网验证我们的目标就是解决这些问题让模型部署更加可控和可靠。3. 分步教程自定义缓存路径3.1 方法一通过环境变量设置推荐这是最简单也是最推荐的方法通过设置环境变量让ModelScope自动使用我们指定的缓存路径。步骤1创建缓存目录首先选择一个合适的位置创建缓存目录。我建议放在/opt/ai-models或者/data/models这样的系统目录下# 创建缓存目录 sudo mkdir -p /opt/ai-models sudo chmod 777 /opt/ai-models # 确保有写入权限 # 或者使用用户目录 mkdir -p ~/ai-models步骤2设置环境变量在Linux系统中可以通过几种方式设置环境变量临时设置当前终端有效export MODELSCOPE_CACHE/opt/ai-models永久设置对所有终端有效# 编辑bash配置文件 echo export MODELSCOPE_CACHE/opt/ai-models ~/.bashrc # 或者编辑profile文件 echo export MODELSCOPE_CACHE/opt/ai-models ~/.profile # 使配置生效 source ~/.bashrc步骤3验证设置是否生效运行Python代码验证环境变量是否设置成功import os # 检查环境变量 cache_path os.environ.get(MODELSCOPE_CACHE) print(fModelScope缓存路径: {cache_path}) # 如果没有设置会显示默认路径 if not cache_path: from modelscope.hub.file_download import model_file_download default_cache model_file_download.default_cache_dir print(f使用默认缓存路径: {default_cache})3.2 方法二在代码中指定缓存路径如果你不想修改系统环境变量也可以在加载模型时直接指定缓存路径。Python代码示例from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 方法1在pipeline中指定cache_dir参数 detector pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, cache_dir/opt/ai-models, # 指定自定义缓存路径 trust_remote_codeTrue ) # 方法2使用ModelScope的配置文件 import os os.environ[MODELSCOPE_CACHE] /opt/ai-models # 然后再创建pipeline detector pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, trust_remote_codeTrue )方法对比方法优点缺点适用场景环境变量一次设置全局生效需要系统权限生产环境、长期使用代码指定灵活每个项目可不同每次都要设置开发测试、多项目配置文件可版本控制需要额外配置文件团队协作、CI/CD3.3 方法三使用配置文件高级用法对于企业级部署可以使用配置文件来管理缓存路径。创建配置文件 在项目根目录创建modelscope_config.json{ cache_dir: /opt/ai-models, model_cache_size: 10GB, download_mode: reuse_downloaded }在代码中加载配置import json import os # 加载配置文件 with open(modelscope_config.json, r) as f: config json.load(f) # 设置缓存路径 os.environ[MODELSCOPE_CACHE] config[cache_dir] # 其他配置项 os.environ[MODELSCOPE_DOWNLOAD_MODE] config[download_mode]4. 离线部署完整指南4.1 准备工作在有网环境下载模型离线部署的第一步是在有网络的环境下把模型下载好然后打包带到离线环境。步骤1在有网服务器下载模型# download_model.py from modelscope import snapshot_download # 指定模型ID和缓存路径 model_id damo/cv_tinynas_object-detection_damoyolo_phone cache_dir /opt/ai-models print(f开始下载模型: {model_id}) print(f缓存路径: {cache_dir}) # 下载模型 model_dir snapshot_download( model_id, cache_dircache_dir, revisionmaster, # 指定版本 ignore_file_pattern[.git, *.md] # 忽略不需要的文件 ) print(f模型下载完成!) print(f模型保存路径: {model_dir}) # 查看下载的文件 import os print(f文件列表:) for root, dirs, files in os.walk(model_dir): for file in files: file_path os.path.join(root, file) file_size os.path.getsize(file_path) print(f {file_path} ({file_size/1024/1024:.2f} MB))步骤2打包模型文件# 进入缓存目录 cd /opt/ai-models # 打包模型文件 # 注意DAMO-YOLO模型的完整路径是 damo/cv_tinynas_object-detection_damoyolo_phone tar -czvf damoyolo_phone_model.tar.gz damo/ # 查看打包后的文件大小 ls -lh damoyolo_phone_model.tar.gz # 输出示例 # -rw-r--r-- 1 user user 125M Feb 6 10:30 damoyolo_phone_model.tar.gz4.2 离线环境部署步骤现在把打包好的模型文件复制到离线服务器开始部署。步骤1传输模型文件到离线服务器# 在有网服务器上使用scp传输需要ssh权限 scp damoyolo_phone_model.tar.gz useroffline-server:/tmp/ # 或者使用U盘等物理介质拷贝步骤2在离线服务器解压模型# 登录离线服务器 ssh useroffline-server # 创建缓存目录 sudo mkdir -p /opt/ai-models sudo chmod 777 /opt/ai-models # 解压模型文件 cd /opt/ai-models tar -xzvf /tmp/damoyolo_phone_model.tar.gz # 验证文件 ls -la damo/cv_tinynas_object-detection_damoyolo_phone/步骤3设置离线模式环境变量为了让ModelScope在离线环境下正常工作需要设置几个关键的环境变量# 设置缓存路径 export MODELSCOPE_CACHE/opt/ai-models # 设置离线模式重要 export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded # 禁用模型下载强制使用本地缓存 export MODELSCOPE_NO_DOWNLOAD1 # 永久设置添加到~/.bashrc echo export MODELSCOPE_CACHE/opt/ai-models ~/.bashrc echo export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded ~/.bashrc echo export MODELSCOPE_NO_DOWNLOAD1 ~/.bashrc source ~/.bashrc步骤4验证离线部署创建测试脚本验证模型能否在离线环境下正常运行# test_offline.py import os import sys print( 离线环境验证 ) # 检查环境变量 print(fMODELSCOPE_CACHE: {os.environ.get(MODELSCOPE_CACHE)}) print(fMODELSCOPE_DOWNLOAD_MODE: {os.environ.get(MODELSCOPE_DOWNLOAD_MODE)}) print(fMODELSCOPE_NO_DOWNLOAD: {os.environ.get(MODELSCOPE_NO_DOWNLOAD)}) # 尝试加载模型 try: from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks print(\n尝试加载模型...) # 创建pipeline指定缓存路径 detector pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, cache_dir/opt/ai-models, trust_remote_codeTrue ) print(✅ 模型加载成功) # 如果有测试图片可以尝试推理 # result detector(test_image.jpg) # print(f推理结果: {result}) except Exception as e: print(f❌ 模型加载失败: {e}) print(可能的原因) print(1. 模型文件路径不正确) print(2. 环境变量设置错误) print(3. 依赖包缺失) sys.exit(1) print(\n✅ 离线部署验证通过)4.3 完整离线部署脚本为了方便部署这里提供一个完整的离线部署脚本#!/bin/bash # deploy_offline.sh # DAMO-YOLO手机检测模型离线部署脚本 set -e # 遇到错误立即退出 echo DAMO-YOLO离线部署脚本 # 配置参数 MODEL_IDdamo/cv_tinynas_object-detection_damoyolo_phone CACHE_DIR/opt/ai-models MODEL_TAR/tmp/damoyolo_phone_model.tar.gz # 检查模型文件是否存在 if [ ! -f $MODEL_TAR ]; then echo 错误: 模型文件不存在: $MODEL_TAR echo 请将模型文件复制到该路径 exit 1 fi # 创建缓存目录 echo 创建缓存目录... sudo mkdir -p $CACHE_DIR sudo chmod 777 $CACHE_DIR # 解压模型文件 echo 解压模型文件... cd $CACHE_DIR tar -xzvf $MODEL_TAR # 设置环境变量 echo 设置环境变量... echo export MODELSCOPE_CACHE$CACHE_DIR ~/.bashrc echo export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded ~/.bashrc echo export MODELSCOPE_NO_DOWNLOAD1 ~/.bashrc # 安装Python依赖如果有requirements.txt if [ -f /tmp/requirements.txt ]; then echo 安装Python依赖... pip install -r /tmp/requirements.txt else echo 安装基础依赖... pip install modelscope torch torchvision opencv-python gradio easydict fi # 验证部署 echo 验证部署... python3 -c import os print(环境变量检查:) print(fMODELSCOPE_CACHE: {os.environ.get(\MODELSCOPE_CACHE\)}) try: from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks detector pipeline( Tasks.domain_specific_object_detection, model$MODEL_ID, cache_dir$CACHE_DIR, trust_remote_codeTrue ) print(✅ 模型加载成功) except Exception as e: print(f❌ 错误: {e}) echo 部署完成 echo 缓存路径: $CACHE_DIR echo 模型ID: $MODEL_ID echo 下次使用时确保设置以下环境变量: echo export MODELSCOPE_CACHE$CACHE_DIR echo export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded5. DAMO-YOLO手机检测模型实战5.1 快速启动Web服务现在模型已经部署好了让我们启动Web服务来测试一下。启动脚本(start.sh)#!/bin/bash # start.sh - DAMO-YOLO手机检测服务启动脚本 # 设置环境变量 export MODELSCOPE_CACHE/opt/ai-models export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded # 进入项目目录 cd /root/cv_tinynas_object-detection_damoyolo_phone # 检查端口是否被占用 PORT7860 if lsof -Pi :$PORT -sTCP:LISTEN -t /dev/null ; then echo 端口 $PORT 已被占用尝试停止现有服务... kill $(cat service.pid 2/dev/null) 2/dev/null || true sleep 2 fi # 启动服务 echo 启动DAMO-YOLO手机检测服务... nohup python3 app.py service.log 21 echo $! service.pid echo 服务已启动PID: $(cat service.pid) echo 访问地址: http://localhost:7860 echo 查看日志: tail -f service.logWeb界面使用打开浏览器访问http://你的服务器IP:7860你会看到一个简洁的界面可以上传图片支持jpg、png格式使用示例图片测试调整置信度阈值查看检测结果和置信度分数5.2 Python API调用示例除了Web界面你也可以通过Python API直接调用模型# phone_detection.py import cv2 import numpy as np from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks import matplotlib.pyplot as plt class PhoneDetector: def __init__(self, cache_dir/opt/ai-models): 初始化手机检测器 print(初始化DAMO-YOLO手机检测模型...) # 设置缓存路径 import os os.environ[MODELSCOPE_CACHE] cache_dir os.environ[MODELSCOPE_DOWNLOAD_MODE] reuse_downloaded # 创建pipeline self.detector pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, cache_dircache_dir, trust_remote_codeTrue ) print(模型加载完成) def detect_image(self, image_path, confidence_threshold0.5): 检测单张图片中的手机 # 读取图片 image cv2.imread(image_path) if image is None: raise ValueError(f无法读取图片: {image_path}) # 执行检测 result self.detector(image_path) # 解析结果 detections [] if scores in result: for i in range(len(result[scores])): score result[scores][i] if score confidence_threshold: bbox result[boxes][i] label result[labels][i] if labels in result else phone detections.append({ bbox: bbox, # [x1, y1, x2, y2] score: float(score), label: label }) return { image: image, detections: detections, original_result: result } def visualize_result(self, detection_result, save_pathNone): 可视化检测结果 image detection_result[image].copy() detections detection_result[detections] for det in detections: bbox det[bbox] score det[score] label det[label] # 转换为整数坐标 x1, y1, x2, y2 map(int, bbox) # 绘制边界框 cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绘制标签和置信度 label_text f{label}: {score:.2f} cv2.putText(image, label_text, (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) # 显示或保存结果 if save_path: cv2.imwrite(save_path, image) print(f结果已保存到: {save_path}) return image # 使用示例 if __name__ __main__: # 初始化检测器 detector PhoneDetector() # 检测图片 result detector.detect_image(test_phone.jpg, confidence_threshold0.3) print(f检测到 {len(result[detections])} 部手机) for i, det in enumerate(result[detections]): print(f手机 {i1}: 置信度{det[score]:.2f}, 位置{det[bbox]}) # 可视化结果 vis_image detector.visualize_result(result, save_pathresult.jpg) # 显示结果如果有GUI环境 # cv2.imshow(Detection Result, vis_image) # cv2.waitKey(0) # cv2.destroyAllWindows()5.3 批量处理与性能优化在实际应用中我们经常需要处理大量图片。这里提供一些批量处理和性能优化的技巧# batch_processing.py import os from concurrent.futures import ThreadPoolExecutor import time class BatchPhoneDetector(PhoneDetector): def __init__(self, cache_dir/opt/ai-models, max_workers4): 初始化批量检测器 super().__init__(cache_dir) self.max_workers max_workers def process_folder(self, input_folder, output_folder, confidence_threshold0.3): 批量处理文件夹中的所有图片 # 创建输出文件夹 os.makedirs(output_folder, exist_okTrue) # 获取所有图片文件 image_extensions [.jpg, .jpeg, .png, .bmp] image_files [] for file in os.listdir(input_folder): if any(file.lower().endswith(ext) for ext in image_extensions): image_files.append(os.path.join(input_folder, file)) print(f找到 {len(image_files)} 张图片) # 批量处理 results [] start_time time.time() with ThreadPoolExecutor(max_workersself.max_workers) as executor: futures [] for img_path in image_files: future executor.submit( self._process_single_image, img_path, output_folder, confidence_threshold ) futures.append(future) # 收集结果 for future in futures: try: result future.result() results.append(result) except Exception as e: print(f处理失败: {e}) # 统计信息 total_time time.time() - start_time avg_time total_time / len(image_files) if image_files else 0 print(f\n批量处理完成) print(f总图片数: {len(image_files)}) print(f总耗时: {total_time:.2f}秒) print(f平均每张: {avg_time*1000:.2f}毫秒) print(f输出目录: {output_folder}) return results def _process_single_image(self, img_path, output_folder, confidence_threshold): 处理单张图片内部方法 try: # 检测 result self.detect_image(img_path, confidence_threshold) # 可视化 filename os.path.basename(img_path) output_path os.path.join(output_folder, fdetected_{filename}) self.visualize_result(result, save_pathoutput_path) return { filename: filename, detections: len(result[detections]), success: True } except Exception as e: return { filename: os.path.basename(img_path), error: str(e), success: False } # 使用示例 if __name__ __main__: # 初始化批量检测器 batch_detector BatchPhoneDetector(max_workers2) # 批量处理 results batch_detector.process_folder( input_folder./input_images, output_folder./output_results, confidence_threshold0.3 ) # 统计检测结果 total_phones sum(r[detections] for r in results if r[success]) print(f总共检测到 {total_phones} 部手机)6. 常见问题与解决方案6.1 部署常见问题问题1模型加载失败提示Connection error错误信息ConnectionError: Could not connect to ModelScope hub解决方案检查是否设置了离线模式环境变量export MODELSCOPE_DOWNLOAD_MODEreuse_downloaded export MODELSCOPE_NO_DOWNLOAD1检查模型文件路径是否正确ls -la /opt/ai-models/damo/cv_tinynas_object-detection_damoyolo_phone/确保模型文件完整至少应包含configuration.json*.pth或*.bin模型文件*.py模型定义文件问题2权限不足无法写入缓存目录错误信息PermissionError: [Errno 13] Permission denied解决方案# 修改目录权限 sudo chmod 777 /opt/ai-models # 或者更改目录所有者 sudo chown -R $USER:$USER /opt/ai-models # 或者使用用户目录 export MODELSCOPE_CACHE$HOME/ai-models问题3依赖包缺失或版本冲突错误信息ModuleNotFoundError: No module named xxx解决方案# 创建独立的虚拟环境 python3 -m venv damoyolo_env source damoyolo_env/bin/activate # 安装指定版本的依赖 pip install modelscope1.34.0 pip install torch2.0.0 torchvision0.15.0 pip install opencv-python4.8.0 pip install gradio4.0.06.2 性能优化建议优化1启用GPU加速如果有NVIDIA GPU可以启用CUDA加速import torch # 检查GPU是否可用 if torch.cuda.is_available(): device cuda print(f使用GPU: {torch.cuda.get_device_name(0)}) else: device cpu print(使用CPU) # 在pipeline中指定设备 detector pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, devicedevice, # 指定设备 cache_dir/opt/ai-models, trust_remote_codeTrue )优化2调整批处理大小对于批量处理可以调整批处理大小来优化性能# 批量推理示例 def batch_inference(image_paths, batch_size4): 批量推理优化 results [] for i in range(0, len(image_paths), batch_size): batch image_paths[i:ibatch_size] batch_results detector(batch) # 支持批量输入 results.extend(batch_results) return results优化3缓存模型实例避免重复加载模型缓存pipeline实例from functools import lru_cache lru_cache(maxsize1) def get_detector(cache_dir/opt/ai-models): 获取检测器单例模式 return pipeline( Tasks.domain_specific_object_detection, modeldamo/cv_tinynas_object-detection_damoyolo_phone, cache_dircache_dir, trust_remote_codeTrue ) # 使用时 detector get_detector() # 第一次会加载模型 result1 detector(image1.jpg) detector2 get_detector() # 第二次直接返回缓存的实例 result2 detector2(image2.jpg)6.3 监控与维护监控脚本(monitor.sh)#!/bin/bash # monitor.sh - 服务监控脚本 # 检查服务是否运行 check_service() { PID_FILE/root/cv_tinynas_object-detection_damoyolo_phone/service.pid if [ -f $PID_FILE ]; then PID$(cat $PID_FILE) if ps -p $PID /dev/null; then echo ✅ 服务运行中 (PID: $PID) return 0 else echo ❌ 服务进程不存在 return 1 fi else echo ❌ PID文件不存在 return 1 fi } # 检查端口占用 check_port() { PORT7860 if lsof -Pi :$PORT -sTCP:LISTEN -t /dev/null; then echo ✅ 端口 $PORT 监听正常 return 0 else echo ❌ 端口 $PORT 未监听 return 1 fi } # 检查模型文件 check_model() { MODEL_DIR/opt/ai-models/damo/cv_tinynas_object-detection_damoyolo_phone if [ -d $MODEL_DIR ]; then FILE_COUNT$(find $MODEL_DIR -type f | wc -l) SIZE$(du -sh $MODEL_DIR | cut -f1) echo ✅ 模型文件存在 (文件数: $FILE_COUNT, 大小: $SIZE) # 检查关键文件 REQUIRED_FILES(configuration.json *.pth *.bin) for file in ${REQUIRED_FILES[]}; do if find $MODEL_DIR -name $file | grep -q .; then echo ✅ 找到 $file else echo ⚠️ 未找到 $file fi done return 0 else echo ❌ 模型目录不存在: $MODEL_DIR return 1 fi } # 检查日志 check_logs() { LOG_FILE/root/cv_tinynas_object-detection_damoyolo_phone/service.log if [ -f $LOG_FILE ]; then SIZE$(du -h $LOG_FILE | cut -f1) LAST_ERROR$(grep -i error\|exception\|failed $LOG_FILE | tail -5) echo 日志文件: $LOG_FILE (大小: $SIZE) if [ -n $LAST_ERROR ]; then echo ⚠️ 最近错误: echo $LAST_ERROR else echo ✅ 最近无错误记录 fi else echo ⚠️ 日志文件不存在 fi } # 主函数 main() { echo DAMO-YOLO服务监控 echo 检查时间: $(date) echo check_service SERVICE_STATUS$? echo check_port PORT_STATUS$? echo check_model MODEL_STATUS$? echo check_logs echo echo 总结 if [ $SERVICE_STATUS -eq 0 ] [ $PORT_STATUS -eq 0 ] [ $MODEL_STATUS -eq 0 ]; then echo ✅ 所有检查通过服务正常 else echo ❌ 存在异常请检查以上问题 fi } # 执行监控 main7. 总结通过本文的教程你应该已经掌握了DAMO-YOLO手机检测模型的自定义缓存路径和离线部署技巧。让我们回顾一下关键要点7.1 核心收获自定义缓存路径的三种方法环境变量设置最推荐全局生效代码中指定最灵活项目级控制配置文件管理最适合团队协作离线部署的关键步骤在有网环境下载并打包模型设置正确的环境变量特别是MODELSCOPE_DOWNLOAD_MODE验证离线环境下的模型加载DAMO-YOLO实战应用Web服务快速启动Python API直接调用批量处理与性能优化7.2 最佳实践建议基于我的实际经验给你几个实用建议对于开发环境使用虚拟环境隔离依赖在代码中指定缓存路径方便不同项目管理定期清理不需要的模型缓存对于生产环境使用固定的缓存目录如/opt/ai-models设置完整的离线模式环境变量建立监控机制定期检查服务状态做好模型文件的备份对于团队协作统一缓存路径规范使用配置文件管理环境变量建立模型文件共享机制7.3 下一步学习方向如果你已经掌握了基础部署可以进一步探索模型微调在自己的数据集上微调DAMO-YOLO提升特定场景的检测精度性能优化使用TensorRT加速、模型量化等技术进一步提升推理速度多模型管理建立统一的模型管理平台管理多个AI模型服务化部署使用Docker容器化部署实现一键部署和弹性伸缩7.4 最后的话AI模型的部署和使用很多时候难点不在算法本身而在工程实践。掌握了缓存路径管理和离线部署这些脏活累活你就能在各种环境下都能让模型跑起来。DAMO-YOLO手机检测模型只是一个开始同样的方法可以应用到ModelScope上的其他模型。记住核心原则控制缓存路径启用离线模式做好环境隔离。希望这篇教程能帮你少走弯路如果在实践中遇到问题欢迎在评论区交流讨论。记住好的工程实践能让好的算法发挥最大价值。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价