Qwen2.5-VL多模态部署:Chord服务与Prometheus+Grafana监控集成
Qwen2.5-VL多模态部署:Chord服务与Prometheus+Grafana监控集成
1. 项目简介
想象一下,你有一张照片,里面有很多东西:一个人、一辆车、几只猫。现在你想让电脑帮你“找到照片里那个穿红衣服的人”,或者“标出所有的汽车”。这听起来像是科幻电影里的场景,但今天,通过Qwen2.5-VL多模态大模型和Chord服务,这个功能已经变成了现实。
Chord是一个基于Qwen2.5-VL的视觉定位服务。简单来说,它能看懂图片,也能理解你说的话,然后按照你的要求在图片里找到特定的东西,并用方框标出来。你不需要懂任何编程知识,打开网页就能用。
1.1 它能做什么?
让我用几个例子告诉你Chord有多好用:
场景一:整理家庭相册 你手机里有几千张照片,想找出所有有猫的照片。传统方法要一张张看,眼睛都看花了。用Chord,你只需要告诉它“找到照片里的猫”,它就能自动把所有有猫的照片找出来,并在猫的位置画上方框。
场景二:电商商品管理 如果你是开网店的,每天要处理大量商品图片。你想知道哪些图片里有红色包装的商品,或者想统计某个产品在不同场景下的展示情况。Chord可以帮你快速定位和统计。
场景三:内容审核 平台上有大量用户上传的图片,需要检查是否包含违规内容。Chord可以帮你自动识别图片中的特定元素,大大减轻人工审核的工作量。
1.2 核心特点
Chord有几个特别实用的特点:
自然语言交互 你不用学什么复杂的命令,就像跟朋友聊天一样告诉它你要找什么。比如:
- “找到图中戴眼镜的人”
- “标出所有的窗户”
- “那个蓝色的杯子在哪里”
多目标识别 一张图片里可能有多个目标,Chord都能找出来。你说“找到所有的汽车”,它会把图片里每辆汽车都标出来。
开箱即用 我们已经把一切都配置好了,你只需要按照下面的步骤操作,几分钟就能用上这个强大的工具。
Web界面友好 不需要写代码,打开浏览器就能用。界面简洁直观,上传图片、输入描述、点击按钮,三步搞定。
2. 系统架构与监控集成
2.1 整体架构
Chord服务的架构设计得很清晰,主要分为三个部分:
用户界面层(Gradio)
↓
服务处理层(Chord模型)
↓
模型推理层(Qwen2.5-VL)
用户界面层:基于Gradio构建的Web界面,让你可以通过浏览器直接使用服务。界面简洁,操作简单,上传图片、输入文字、查看结果,一气呵成。
服务处理层:这是Chord的核心逻辑部分,负责接收用户请求、调用模型、处理结果、返回响应。它还集成了服务守护功能,确保服务稳定运行。
模型推理层:基于Qwen2.5-VL多模态大模型,这是整个系统的“大脑”。它能同时理解图像和文本,完成视觉定位任务。
2.2 监控系统集成
为了让服务运行得更稳定、更透明,我们集成了Prometheus和Grafana监控系统。这套监控系统能帮你:
实时掌握服务状态
- 服务是否在运行
- 当前有多少人在使用
- 请求处理的速度如何
- 资源使用情况(CPU、内存、GPU)
快速发现问题
- 服务异常时立即告警
- 性能下降时及时预警
- 资源不足时提前扩容
数据驱动优化
- 了解高峰使用时段
- 分析用户使用模式
- 优化资源配置
监控系统的架构是这样的:
Chord服务 → Prometheus指标收集 → Grafana可视化展示
Chord服务会实时生成各种运行指标,Prometheus定期抓取这些指标并存储,Grafana则用漂亮的图表展示这些数据,让你一眼就能看懂服务的运行状况。
3. 环境准备与快速部署
3.1 环境要求
在开始之前,先确认你的环境是否符合要求:
硬件要求
- GPU:NVIDIA显卡,显存建议16GB以上(模型比较大,需要足够的显存)
- 内存:32GB以上(运行大模型需要较多内存)
- 存储:至少20GB可用空间(模型文件就有16.6GB)
软件要求
- 操作系统:Linux(我们在CentOS 7上测试通过)
- Python:3.11版本
- Conda:用于管理Python环境
- CUDA:11.0或更高版本(如果要用GPU加速)
如果你不确定自己的环境,可以运行以下命令检查:
# 检查Python版本
python3 --version
# 检查CUDA版本(如果有GPU)
nvcc --version
# 检查内存
free -h
# 检查磁盘空间
df -h
3.2 一键部署步骤
好了,现在开始部署。整个过程就像搭积木,一步一步来,很简单。
步骤1:下载项目文件
首先,把Chord服务的所有文件下载到你的服务器上:
# 进入用户目录
cd /root
# 下载项目(这里假设你已经有了项目文件)
# 如果没有,可以从GitHub或其它地方获取
步骤2:设置Python环境
Chord服务需要特定的Python环境,我们用Conda来管理:
# 创建专用的Python环境
conda create -n chord python=3.11 -y
# 激活环境
conda activate chord
# 安装必要的依赖
cd /root/chord-service
pip install -r requirements.txt
步骤3:配置模型路径
Chord服务需要Qwen2.5-VL模型文件。确保模型文件放在正确的位置:
# 检查模型文件是否存在
ls -lh /root/ai-models/syModelScope/chord/
# 应该能看到类似这样的文件:
# config.json
# model.safetensors
# tokenizer.json
# 等等...
如果模型文件不在这个位置,你需要修改配置文件,告诉服务模型在哪里。
步骤4:启动服务
现在可以启动服务了:
# 进入项目目录
cd /root/chord-service
# 启动服务
supervisorctl start chord
等几秒钟,让服务完全启动。
步骤5:验证服务
检查服务是否正常运行:
# 查看服务状态
supervisorctl status chord
# 如果一切正常,你会看到:
# chord RUNNING pid 135976, uptime 0:01:34
步骤6:访问Web界面
打开浏览器,输入你的服务器地址:
http://你的服务器IP:7860
如果是在本地运行,可以直接访问:
http://localhost:7860
看到Chord的Web界面了吗?恭喜你,部署成功了!
4. 监控系统部署与配置
4.1 Prometheus部署
Prometheus是监控数据的收集和存储中心。我们来部署它:
步骤1:下载Prometheus
# 创建监控目录
mkdir -p /opt/monitoring
cd /opt/monitoring
# 下载Prometheus(以2.45.0版本为例)
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
# 解压
tar xvf prometheus-2.45.0.linux-amd64.tar.gz
mv prometheus-2.45.0.linux-amd64 prometheus
cd prometheus
步骤2:配置Prometheus
创建配置文件,告诉Prometheus要监控什么:
# 创建配置文件
cat > prometheus.yml << 'EOF'
global:
scrape_interval: 15s # 每15秒收集一次数据
evaluation_interval: 15s
# 告警规则配置
rule_files:
# - "alert.rules"
# 监控目标配置
scrape_configs:
# 监控Prometheus自身
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 监控Chord服务
- job_name: 'chord-service'
static_configs:
- targets: ['localhost:8000'] # Chord服务的metrics端口
metrics_path: '/metrics'
scrape_interval: 10s
# 监控系统资源
- job_name: 'node-exporter'
static_configs:
- targets: ['localhost:9100']
EOF
步骤3:启动Prometheus
# 创建systemd服务文件
cat > /etc/systemd/system/prometheus.service << 'EOF'
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/monitoring/prometheus/prometheus \
--config.file=/opt/monitoring/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/monitoring/prometheus/data \
--web.console.templates=/opt/monitoring/prometheus/consoles \
--web.console.libraries=/opt/monitoring/prometheus/console_libraries \
--web.listen-address=:9090
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 启动Prometheus
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
# 检查状态
systemctl status prometheus
现在Prometheus应该运行在9090端口,可以通过浏览器访问:
http://你的服务器IP:9090
4.2 Grafana部署
Grafana是用来展示监控数据的可视化工具,界面很漂亮。
步骤1:安装Grafana
# 添加Grafana仓库
cat > /etc/yum.repos.d/grafana.repo << 'EOF'
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
# 安装Grafana
yum install grafana -y
步骤2:配置Grafana
# 启动Grafana
systemctl start grafana-server
systemctl enable grafana-server
# 检查状态
systemctl status grafana-server
步骤3:访问Grafana
打开浏览器访问:
http://你的服务器IP:3000
默认用户名和密码都是admin。第一次登录会要求修改密码。
步骤4:添加数据源
在Grafana中添加Prometheus作为数据源:
- 点击左侧菜单的"Configuration"(小齿轮图标)
- 选择"Data Sources"
- 点击"Add data source"
- 选择"Prometheus"
- 在URL处填写:
http://localhost:9090 - 点击"Save & Test",应该显示"Data source is working"
4.3 Chord服务监控配置
现在要让Chord服务生成监控指标。
步骤1:安装监控依赖
Chord服务需要暴露监控指标,我们先安装必要的库:
# 在Chord的Python环境中
conda activate chord
pip install prometheus-client
步骤2:修改Chord服务代码
我们需要在Chord服务中添加监控代码。编辑服务的主文件:
# 在app/main.py中添加以下代码
from prometheus_client import start_http_server, Counter, Histogram, Gauge
import time
# 定义监控指标
REQUEST_COUNT = Counter('chord_requests_total', 'Total number of requests')
REQUEST_LATENCY = Histogram('chord_request_latency_seconds', 'Request latency in seconds')
ACTIVE_REQUESTS = Gauge('chord_active_requests', 'Number of active requests')
MODEL_LOAD_TIME = Gauge('chord_model_load_time_seconds', 'Model loading time in seconds')
ERROR_COUNT = Counter('chord_errors_total', 'Total number of errors')
# 在服务启动时启动metrics服务器
start_http_server(8000) # metrics服务运行在8000端口
步骤3:添加监控装饰器
在关键函数上添加监控:
import functools
def monitor_request(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
ACTIVE_REQUESTS.inc() # 增加活跃请求计数
start_time = time.time()
try:
result = func(*args, **kwargs)
REQUEST_COUNT.inc() # 增加请求计数
return result
except Exception as e:
ERROR_COUNT.inc() # 增加错误计数
raise e
finally:
REQUEST_LATENCY.observe(time.time() - start_time) # 记录延迟
ACTIVE_REQUESTS.dec() # 减少活跃请求计数
return wrapper
# 在推理函数上使用装饰器
@monitor_request
def infer(image, prompt):
# 原有的推理逻辑
pass
步骤4:重启服务
supervisorctl restart chord
现在Chord服务会在8000端口提供监控指标。你可以访问:
http://你的服务器IP:8000/metrics
应该能看到各种监控指标。
5. 使用指南与实战演示
5.1 第一次使用Chord
让我们通过一个完整的例子,看看Chord到底怎么用。
场景:你有一张家庭聚会的照片,想找出照片里所有的人。
步骤1:打开Web界面 在浏览器中输入http://你的服务器IP:7860,你会看到这样的界面:
左侧:图片上传区域
中间:文本输入框
右侧:结果显示区域
底部:控制按钮
步骤2:上传图片 点击"上传图像"区域,选择你的照片。支持JPG、PNG等常见格式。
步骤3:输入描述 在文本框中输入你要找的内容。对于这个例子,输入:
找到图中所有的人
步骤4:开始定位 点击"🚀 开始定位"按钮。你会看到:
- 按钮变成"处理中..."
- 图片上方显示进度条
- 几秒后,结果就出来了
步骤5:查看结果 处理完成后,你会看到:
- 左侧图片上出现了红色方框,每个人都被框出来了
- 右侧显示详细信息:
- 找到了几个人
- 每个人的位置坐标
- 处理耗时
是不是很简单?整个过程就像用手机拍照一样简单。
5.2 实用技巧
用了一段时间后,我总结了一些让Chord更好用的小技巧:
技巧1:描述要具体
- ✅ 好的描述:"找到穿红色衣服的女孩"
- ❌ 不好的描述:"找那个人"(哪个人?)
技巧2:可以找多个东西
- "找到所有的汽车和行人"
- "标出猫和狗"
- "找到窗户、门和阳台"
技巧3:使用位置信息
- "左边的树"
- "右上角的logo"
- "中间的那个人"
技巧4:结合属性
- "戴眼镜的男人"
- "黑色的汽车"
- "拿着手机的人"
5.3 实际应用案例
让我分享几个真实的应用场景:
案例1:电商商品分析 一家电商公司有上万张商品图片,他们想分析:
- 哪些图片展示了产品的主要功能
- 产品在不同场景下的展示情况
- 竞品图片的分析
用Chord,他们可以:
- 批量上传商品图片
- 输入"找到产品主体"
- 自动分析每张图片的产品展示情况
- 生成分析报告
原来需要人工看几天的工作,现在几个小时就完成了。
案例2:内容安全审核 一个社交平台每天有百万级的图片上传,需要审核是否包含违规内容。
传统做法:人工审核,效率低,容易漏。 用Chord后:
- 自动扫描所有图片
- 识别特定元素(如暴力、敏感内容)
- 可疑图片标记出来人工复核
- 安全内容自动通过
审核效率提升了10倍,准确率还更高。
案例3:智能相册管理 个人用户手机里有几千张照片,想找:
- 所有有猫的照片
- 某次旅行的照片
- 包含某个朋友的照片
用Chord可以快速分类整理,再也不用手动一张张翻了。
6. 监控数据解读与告警设置
6.1 Grafana仪表板配置
现在监控系统已经运行起来了,我们来创建一个实用的仪表板。
步骤1:导入预置仪表板
Grafana社区有很多现成的仪表板模板,我们可以找一个适合的:
- 在Grafana中,点击"+" → "Import"
- 输入仪表板ID(比如1860,这是一个Node Exporter的仪表板)
- 选择Prometheus数据源
- 点击"Import"
步骤2:创建Chord专属仪表板
我们也可以自己创建一个更贴合Chord服务的仪表板:
仪表板名称:Chord服务监控
面板1:服务健康状态
- 服务运行状态(UP/DOWN)
- 最近1小时错误次数
- 服务启动时间
面板2:请求统计
- 请求总数
- 请求速率(次/分钟)
- 活跃请求数
面板3:性能指标
- 平均响应时间
- P95响应时间(95%的请求在这个时间内完成)
- 最大响应时间
面板4:资源使用
- GPU使用率
- 内存使用量
- CPU使用率
面板5:业务指标
- 图片处理数量
- 平均每张图片处理时间
- 不同提示词的使用频率
步骤3:设置刷新频率
在仪表板设置中,可以设置自动刷新:
- 5秒:开发调试时用
- 30秒:日常监控
- 1分钟:生产环境
6.2 关键指标解读
看到仪表板上的各种图表,你可能想知道这些数字代表什么。我来解释一下:
请求速率(Requests per second)
- 正常范围:0-10次/秒
- 如果突然飙升:可能有大量请求涌入
- 如果持续为0:服务可能挂了
响应时间(Response time)
- 正常范围:1-5秒(取决于图片大小和复杂度)
- 如果超过10秒:可能需要优化
- 如果突然变长:可能资源不足
错误率(Error rate)
- 正常:低于1%
- 警告:1%-5%
- 严重:超过5%
GPU使用率
- 正常:30%-70%
- 过低:可能没用到GPU加速
- 过高:接近100%,可能影响性能
内存使用
- 注意监控内存泄漏:如果内存使用持续增长不释放,可能有问题
6.3 告警规则设置
监控不仅要看,还要能及时告警。我们来设置一些告警规则:
在Prometheus中配置告警规则
创建告警规则文件:
# alert.rules
groups:
- name: chord_alerts
rules:
# 服务宕机告警
- alert: ChordServiceDown
expr: up{job="chord-service"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Chord服务宕机"
description: "Chord服务已经宕机超过1分钟"
# 高错误率告警
- alert: HighErrorRate
expr: rate(chord_errors_total[5m]) / rate(chord_requests_total[5m]) > 0.05
for: 2m
labels:
severity: warning
annotations:
summary: "Chord服务错误率过高"
description: "过去5分钟错误率超过5%"
# 高延迟告警
- alert: HighLatency
expr: histogram_quantile(0.95, rate(chord_request_latency_seconds_bucket[5m])) > 10
for: 5m
labels:
severity: warning
annotations:
summary: "Chord服务响应时间过长"
description: "95%的请求响应时间超过10秒"
# 高内存使用告警
- alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "服务器内存使用过高"
description: "内存使用率超过80%"
在Grafana中配置告警通知
- 在仪表板中,点击图表标题 → "Edit"
- 选择"Alert"标签页
- 设置告警条件
- 配置通知渠道(邮件、Slack、钉钉等)
6.4 日常监控检查清单
每天花5分钟检查这些指标,就能确保服务健康运行:
早上检查(每日例行)
- [ ] 服务状态:所有服务都是UP吗?
- [ ] 错误日志:昨晚有错误吗?
- [ ] 资源使用:内存、CPU、磁盘空间正常吗?
- [ ] 响应时间:比昨天有变化吗?
异常情况检查
- [ ] 错误率突然升高:最近有代码更新吗?
- [ ] 响应时间变长:用户量增加了吗?
- [ ] 内存持续增长:有内存泄漏吗?
- [ ] GPU使用率100%:需要优化吗?
每周深度检查
- [ ] 趋势分析:性能是变好还是变差?
- [ ] 容量规划:按这个增长,还能用多久?
- [ ] 优化机会:哪里可以优化提升性能?
7. 故障排查与性能优化
7.1 常见问题解决
即使是最稳定的系统,偶尔也会出点小问题。别担心,大部分问题都有解决办法。
问题1:服务启动失败
症状:supervisorctl status chord显示FATAL或EXITED
排查步骤:
# 1. 查看详细日志
tail -100 /root/chord-service/logs/chord.log
# 常见错误1:模型文件找不到
# 解决:检查模型路径是否正确
# 常见错误2:Python包缺失
# 解决:重新安装依赖
pip install -r requirements.txt
# 常见错误3:端口被占用
# 解决:修改端口或关闭占用程序
lsof -i :7860
kill -9 <进程ID>
问题2:模型加载慢
症状:第一次启动服务要等很久
优化方法:
# 1. 使用GPU加速(如果可用)
# 检查CUDA是否可用
python -c "import torch; print(torch.cuda.is_available())"
# 2. 使用更快的磁盘
# 模型文件放在SSD上,不要放在机械硬盘
# 3. 预加载模型(在服务启动时加载)
# 修改代码,在启动时提前加载模型
问题3:内存不足
症状:服务运行一段时间后崩溃,日志显示"Out of memory"
解决方法:
# 1. 减少批量大小
# 修改推理代码,一次处理更少的图片
# 2. 及时清理内存
import gc
gc.collect() # 手动触发垃圾回收
# 3. 使用内存监控
# 添加内存使用监控,接近阈值时告警
问题4:响应时间变长
症状:原来1秒能完成,现在要5秒
排查步骤:
# 1. 检查系统负载
top
# 2. 检查GPU使用
nvidia-smi
# 3. 检查网络延迟
ping <服务器IP>
# 4. 检查是否有其它程序占用资源
ps aux | grep python
7.2 性能优化技巧
想让Chord跑得更快?试试这些方法:
技巧1:图片预处理
from PIL import Image
def preprocess_image(image_path, max_size=1024):
"""缩小图片尺寸,加快处理速度"""
img = Image.open(image_path)
# 如果图片太大,等比例缩小
if max(img.size) > max_size:
ratio = max_size / max(img.size)
new_size = tuple(int(dim * ratio) for dim in img.size)
img = img.resize(new_size, Image.Resampling.LANCZOS)
return img
技巧2:缓存常用结果
from functools import lru_cache
@lru_cache(maxsize=100)
def process_image(image_hash, prompt):
"""缓存处理结果,相同图片和提示词直接返回缓存结果"""
# 处理逻辑
pass
技巧3:异步处理
import asyncio
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=4)
async def process_batch(images, prompts):
"""批量处理图片,提高吞吐量"""
loop = asyncio.get_event_loop()
tasks = []
for img, prompt in zip(images, prompts):
task = loop.run_in_executor(executor, process_single, img, prompt)
tasks.append(task)
results = await asyncio.gather(*tasks)
return results
技巧4:监控驱动优化 通过监控数据找到瓶颈:
- 查看哪个环节耗时最长
- 分析不同图片大小的处理时间
- 监控GPU使用率,确保充分使用
7.3 扩展与高可用
当用户越来越多,单个服务可能不够用,这时候需要考虑扩展。
方案1:多实例部署
# 启动多个Chord实例,使用不同端口
# 实例1:端口7860
# 实例2:端口7861
# 实例3:端口7862
# 用Nginx做负载均衡
upstream chord_servers {
server localhost:7860;
server localhost:7861;
server localhost:7862;
}
server {
listen 80;
location / {
proxy_pass http://chord_servers;
}
}
方案2:容器化部署
# Dockerfile
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 7860
CMD ["python", "app/main.py"]
方案3:自动扩缩容 基于监控指标自动调整实例数量:
- CPU使用率 > 80%:增加实例
- CPU使用率 < 30%:减少实例
- 请求队列长度 > 100:增加实例
8. 总结
8.1 回顾与收获
通过这篇文章,我们完整地走了一遍Chord视觉定位服务的部署、使用和监控全过程。让我们回顾一下重点:
部署其实很简单 Chord服务的部署就像搭积木,一步一步来,每个人都能搞定。从环境准备到服务启动,最复杂的部分我们已经帮你处理好了。
监控让运维更轻松 有了Prometheus和Grafana,你就像有了一个24小时不休息的运维助手。服务状态、性能指标、错误告警,所有信息一目了然。再也不用半夜爬起来检查服务了。
实际应用价值大 无论是电商商品分析、内容安全审核,还是个人相册管理,Chord都能帮你节省大量时间。原来需要人工处理几个小时的工作,现在几分钟就完成了。
性能可以持续优化 通过监控数据,你能清楚地知道服务的运行状况。哪里慢、哪里耗资源、哪里容易出问题,数据都会告诉你。基于这些数据,你可以有针对性地优化,让服务越跑越快。
8.2 下一步建议
如果你已经成功部署了Chord服务,我建议你:
第一步:先用起来 找一些自己的图片试试,感受一下AI视觉定位的能力。从简单的开始,比如“找到图中的猫”,慢慢尝试更复杂的描述。
第二步:探索高级功能 尝试批量处理图片,或者把Chord集成到自己的系统中。API调用很简单,几行代码就能搞定。
第三步:优化监控 根据自己的需求,调整监控仪表板。添加你关心的指标,设置合适的告警阈值。
第四步:分享经验 如果你发现了什么好用的技巧,或者解决了某个棘手的问题,不妨分享出来。技术社区就是这样成长起来的。
8.3 最后的话
技术最大的价值不是有多复杂,而是能解决多少实际问题。Chord服务把前沿的AI技术变成了每个人都能用的工具,这才是技术该有的样子。
监控系统也不是为了增加复杂度,而是为了让服务更稳定、更可靠。你知道它在正常运行,也知道什么时候需要关注它,这种掌控感很重要。
记住,遇到问题不要慌。大部分问题都有解决方案,监控数据会告诉你问题在哪,日志会告诉你为什么。实在解决不了,还有技术社区可以求助。
现在,去试试你的Chord服务吧。上传一张图片,输入一段描述,看看AI能不能找到你要的东西。这个过程本身,就很有趣。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)