Qwen2.5-VL-Chord部署教程:国产昇腾AI芯片(CANN)适配进展

1. 项目简介:让AI看懂图片并“指”给你看

想象一下,你给AI看一张照片,然后对它说:“帮我找到照片里那只白色的花瓶。”AI不仅能听懂你的话,还能在图片上准确地画出一个框,告诉你花瓶在哪里。这就是我们今天要介绍的Qwen2.5-VL-Chord视觉定位模型。

1.1 什么是视觉定位?

视觉定位听起来有点专业,其实理解起来很简单。它就像是给AI装上了一双“会思考的眼睛”和一只“会指路的手”。

  • 眼睛:AI能看懂图片里有什么
  • 大脑:AI能理解你的文字描述
  • :AI能在图片上准确地标出你描述的东西

比如你上传一张家庭聚会的照片,然后输入“找到穿红色衣服的小孩”,AI就会在照片里所有穿红衣服的小孩周围画上框。或者你上传一张街景图,输入“找出所有的汽车”,AI就能把每辆汽车都找出来。

1.2 Chord模型的核心能力

Chord模型基于Qwen2.5-VL多模态大模型开发,它有几个特别实用的特点:

1. 自然语言理解 你不用学什么专业术语,就像平时说话一样告诉AI你要找什么。比如:

  • “图中戴眼镜的男人”
  • “画面左边的猫”
  • “所有红色的苹果”
  • “最大的那栋建筑”

2. 多目标定位 一次可以找出多个目标。你说“找到图中所有的狗”,它就能把画面里每只狗都找出来,每只狗一个框。

3. 无需额外训练 这个模型已经学会了识别各种常见物体,包括:

  • 人物(大人、小孩、男人、女人)
  • 动物(猫、狗、鸟等)
  • 交通工具(汽车、自行车、飞机)
  • 日常物品(杯子、手机、椅子)
  • 建筑元素(窗户、门、屋顶)

你不需要准备专门的训练数据,直接用就行。

4. 返回精确坐标 找到目标后,它会返回具体的坐标信息,格式是[左上角x, 左上角y, 右下角x, 右下角y]。这些坐标可以直接用在其他程序里,比如自动标注工具、机器人导航系统等。

2. 环境准备与快速部署

2.1 硬件和软件要求

在开始部署之前,我们先看看需要准备什么。

硬件要求:

  • GPU:推荐NVIDIA显卡,显存16GB以上效果更好
  • 内存:至少32GB,模型加载需要一定内存
  • 存储空间:准备20GB以上的可用空间,模型文件大约16.6GB

软件要求:

  • 操作系统:Linux系统(推荐CentOS 7或Ubuntu 20.04以上)
  • Python:3.11版本
  • CUDA:11.0或更高版本(如果用GPU的话)
  • Conda:用于管理Python环境

如果你用的是国产昇腾AI芯片,好消息是Chord模型已经做了适配。虽然本文主要基于NVIDIA GPU环境,但昇腾版本的部署流程也基本类似,主要区别在于深度学习框架的安装。

2.2 一键部署步骤

部署过程比你想的要简单。如果你用的是已经配置好的环境,可能只需要几条命令就能搞定。

步骤1:检查服务状态 首先看看服务是不是已经在运行了:

supervisorctl status chord

如果看到类似这样的输出,说明服务已经在运行了:

chord                            RUNNING   pid 135976, uptime 0:01:34

步骤2:访问Web界面 打开浏览器,输入地址:

http://localhost:7860

如果你是在远程服务器上部署,把localhost换成服务器的IP地址就行。

步骤3:开始使用 打开页面后,你会看到一个简洁的界面:

  • 左边是图片上传区域
  • 中间是文本输入框
  • 右边是结果显示区域

试试上传一张图片,然后输入描述,点击“开始定位”按钮,几秒钟后就能看到结果。

3. 详细使用指南

3.1 第一次使用:从简单开始

如果你是第一次用这个工具,建议从简单的例子开始。

示例1:找人物

  1. 找一张有人的照片(家庭合影、街拍都可以)
  2. 上传图片
  3. 在文本框输入:“找到图中的人”
  4. 点击“🚀 开始定位”

你会看到AI在每个人周围都画上了框,并在右侧显示找到了多少人,以及每个人的具体坐标。

示例2:找特定物体

  1. 上传一张室内照片
  2. 输入:“找到桌子上的水杯”
  3. 开始定位

AI会专门找出桌子上的水杯,忽略其他地方的水杯。

示例3:多目标查找

  1. 上传一张公园照片
  2. 输入:“找出所有的狗和小孩”
  3. 开始定位

AI会同时找出狗和小孩,并用不同的信息显示出来。

3.2 编写提示词的技巧

要让AI准确找到目标,描述的方式很重要。下面是一些实用技巧:

✅ 这样描述效果更好:

描述方式 例子 为什么好
具体明确 “穿红色裙子的女孩” 颜色+服装+目标,非常具体
包含位置 “画面左下角的汽车” 给出了大致位置范围
明确数量 “所有的猫” 告诉AI要找全部
使用属性 “最大的那栋楼” 用比较级帮助定位

❌ 避免这样描述:

描述方式 问题 改进建议
“这是什么?” 太模糊,AI不知道你要找什么 改为“图中有什么物体?”
“帮我看看” 没有明确任务 具体说明要看什么
“分析一下” 过于宽泛 明确要分析哪个方面

实用小贴士:

  • 如果目标比较小,可以放大图片后再上传
  • 复杂场景可以分多次定位,比如先找“人”,再找“人手里的手机”
  • 如果第一次没找到,换个描述方式再试一次

3.3 理解返回结果

定位完成后,你会看到两个主要结果:

1. 标注后的图片 图片上会显示蓝色的边界框,每个框对应一个找到的目标。框的粗细和颜色可以根据需要调整。

2. 详细信息 右侧会显示文本结果,通常包含:

  • 找到的目标数量
  • 每个目标的坐标位置
  • 有时会有置信度分数

坐标的格式是[x1, y1, x2, y2],解释一下:

  • x1, y1:框的左上角坐标
  • x2, y2:框的右下角坐标
  • 坐标原点在图片左上角
  • 单位是像素

比如坐标[100, 150, 200, 300]表示:

  • 从左边100像素、上边150像素的位置开始
  • 到右边200像素、下边300像素的位置结束
  • 框的宽度是100像素,高度是150像素

4. 高级功能与API调用

4.1 通过代码调用模型

除了用Web界面,你也可以在Python代码里直接调用模型,这样就能把视觉定位功能集成到自己的项目里。

基本调用示例:

import sys
# 添加模型路径
sys.path.append('/root/chord-service/app')

from model import ChordModel
from PIL import Image

# 第一步:初始化模型
print("正在加载模型...")
model = ChordModel(
    model_path="/root/ai-models/syModelScope/chord",  # 模型路径
    device="cuda"  # 使用GPU,如果是CPU就写"cpu"
)
model.load()  # 加载模型,第一次可能稍慢
print("模型加载完成!")

# 第二步:准备图片
image = Image.open("你的图片.jpg")  # 换成你的图片路径

# 第三步:开始定位
print("开始定位...")
result = model.infer(
    image=image,
    prompt="找到图中的人",  # 你的描述
    max_new_tokens=512  # 最大生成长度,一般不用改
)

# 第四步:处理结果
print(f"找到了 {len(result['boxes'])} 个目标")
for i, box in enumerate(result['boxes']):
    print(f"目标{i+1}: 坐标 {box}")

返回结果详解: 调用完成后,你会得到一个字典,包含这些信息:

{
    "text": "在图片中找到了3个人<box>...</box>",  # 模型生成的文本
    "boxes": [  # 边界框列表,每个框是一个元组
        (100, 150, 200, 300),  # 第一个目标的坐标
        (250, 180, 350, 280),  # 第二个目标的坐标
        # ... 更多目标
    ],
    "image_size": (800, 600)  # 图片的宽和高
}

4.2 批量处理图片

如果你有很多图片需要处理,可以写个简单的批量处理脚本:

import os
from PIL import Image

# 图片文件夹
image_folder = "你的图片文件夹"
output_folder = "结果文件夹"

# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)

# 要查找的目标描述
prompts = [
    "找到图中的人",
    "找出所有的汽车",
    "定位红色的物体"
]

# 批量处理
for filename in os.listdir(image_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        image_path = os.path.join(image_folder, filename)
        
        # 加载图片
        image = Image.open(image_path)
        
        # 对每个描述进行定位
        for prompt in prompts:
            result = model.infer(image=image, prompt=prompt)
            
            # 保存结果
            output_file = f"{filename}_{prompt[:10]}.txt"
            with open(os.path.join(output_folder, output_file), 'w') as f:
                f.write(f"图片: {filename}\n")
                f.write(f"描述: {prompt}\n")
                f.write(f"找到目标数: {len(result['boxes'])}\n")
                for i, box in enumerate(result['boxes']):
                    f.write(f"目标{i+1}: {box}\n")
                f.write("\n")
        
        print(f"已处理: {filename}")

这个脚本会:

  1. 读取文件夹里的所有图片
  2. 对每张图片执行多个定位任务
  3. 把结果保存到文本文件里
  4. 显示处理进度

4.3 与其他工具集成

Chord模型的定位结果可以很方便地用到其他场景:

1. 图像标注工具 把定位结果导入标注工具,可以快速生成训练数据。

2. 内容审核系统 自动检测图片中是否包含特定内容。

3. 机器人视觉 让机器人识别环境中的物体并定位。

4. 智能相册 自动给照片中的人物、宠物等添加标签。

5. 配置与优化

5.1 配置文件详解

Chord服务的配置主要在/root/chord-service/supervisor/chord.conf这个文件里。如果你需要调整设置,可以修改这个文件。

主要配置项:

[program:chord]
# 服务名称
command=/opt/miniconda3/bin/python /root/chord-service/app/main.py

# 环境变量设置
environment=
    MODEL_PATH="/root/ai-models/syModelScope/chord",  # 模型路径
    DEVICE="auto",      # 设备选择:auto/cuda/cpu
    PORT="7860",        # 服务端口
    PYTHONUNBUFFERED="1"  # 实时输出日志

# 进程管理
autorestart=true        # 自动重启
startretries=3          # 启动重试次数
user=root               # 运行用户
stdout_logfile=/root/chord-service/logs/chord.log  # 日志文件
redirect_stderr=true    # 错误重定向

常用调整:

  1. 更换模型路径 如果你把模型放到了其他地方,修改MODEL_PATH
MODEL_PATH="/你的/模型/路径"
  1. 切换设备 如果GPU内存不够,可以切换到CPU:
DEVICE="cpu"
  1. 修改端口 如果7860端口被占用,换一个:
PORT="8080"

修改配置后需要重启服务:

supervisorctl reread
supervisorctl update
supervisorctl restart chord

5.2 性能优化建议

1. GPU内存优化 如果遇到GPU内存不足的问题,可以尝试:

  • 减小输入图片的尺寸
  • 使用更小的模型版本(如果有的话)
  • 分批处理图片,不要一次性加载太多

2. 推理速度优化 想要更快的结果?

  • 确保使用GPU模式(DEVICE="cuda"
  • 图片尺寸不要太大,建议长边不超过1024像素
  • 减少max_new_tokens参数(但不要小于128)

3. 批量处理优化 处理大量图片时:

# 预先加载模型,避免重复加载
model = ChordModel()
model.load()

# 批量读取图片,但分批处理
batch_size = 4  # 根据GPU内存调整
for i in range(0, len(images), batch_size):
    batch = images[i:i+batch_size]
    # 处理这一批图片

5.3 日志管理

服务运行过程中会产生日志,这些日志对排查问题很有帮助。

查看实时日志:

tail -f /root/chord-service/logs/chord.log

查看最近错误:

grep -i error /root/chord-service/logs/chord.log | tail -20

查看服务启动日志:

grep -i "loading\|loaded\|start" /root/chord-service/logs/chord.log

清理旧日志(谨慎操作):

# 清空日志文件
> /root/chord-service/logs/chord.log

# 或者备份后清空
cp /root/chord-service/logs/chord.log /root/chord-service/logs/chord.log.bak
> /root/chord-service/logs/chord.log

6. 常见问题与解决方案

6.1 服务启动问题

问题:服务启动失败,显示FATAL状态

supervisorctl status chord
chord  FATAL

解决步骤:

  1. 查看详细日志
tail -50 /root/chord-service/logs/chord.log

常见错误信息:

  • FileNotFoundError:模型文件找不到
  • ImportError:Python包缺失
  • CUDA error:GPU相关问题
  1. 检查模型文件
# 检查模型目录是否存在
ls -la /root/ai-models/syModelScope/chord/

# 检查关键文件
ls -lh /root/ai-models/syModelScope/chord/*.safetensors
  1. 检查Python环境
# 激活环境
source /opt/miniconda3/bin/activate torch28

# 检查关键包
python -c "import torch; print(f'PyTorch版本: {torch.__version__}')"
python -c "import transformers; print(f'Transformers版本: {transformers.__version__}')"

问题:端口被占用 错误信息:Address already in use :7860

解决方案:

# 查看谁占用了7860端口
lsof -i :7860

# 如果不需要那个进程,结束它
kill -9 <进程ID>

# 或者修改Chord服务的端口
# 编辑配置文件,修改PORT环境变量

6.2 模型使用问题

问题:找不到目标或定位不准

可能原因和解决方案:

  1. 描述不够具体

    • ❌ 不好:“找车”
    • ✅ 好:“找红色的轿车”
  2. 目标太小或模糊

    • 尝试放大图片后再上传
    • 确保图片清晰度足够
  3. 目标被遮挡

    • 如果目标被部分遮挡,可能无法识别
    • 尝试从不同角度描述
  4. 模型限制

    • 某些罕见物体可能识别不了
    • 过于复杂的场景可能效果不佳

问题:推理速度慢

优化建议:

  1. 检查GPU状态
nvidia-smi

查看GPU使用率和内存占用。

  1. 调整图片尺寸
# 在处理前调整图片大小
from PIL import Image

image = Image.open("large_image.jpg")
# 调整到合适尺寸
image = image.resize((1024, 768))  # 宽度1024,高度768
  1. 使用更简单的描述 复杂的描述需要更多计算时间。

6.3 国产昇腾芯片适配说明

对于使用国产昇腾AI芯片的用户,Chord模型也提供了适配支持。主要区别在于深度学习框架的安装和配置。

昇腾环境部署要点:

  1. 框架选择 需要使用昇腾版本的PyTorch,而不是标准的NVIDIA版本。

  2. 安装命令示例

# 安装昇腾版本的PyTorch
pip install torch_npu

# 其他依赖与标准版本相同
pip install transformers gradio
  1. 设备指定 在代码中指定使用NPU设备:
# 标准GPU版本
device = "cuda"

# 昇腾版本
device = "npu"
  1. 性能考虑
  • 昇腾芯片的性能表现与具体型号有关
  • 可能需要调整batch size等参数
  • 建议参考昇腾官方文档进行优化

兼容性说明:

  • 模型权重文件是通用的
  • 主要区别在推理框架层
  • API接口保持一致
  • 功能特性完全相同

7. 实际应用案例

7.1 案例一:智能相册管理

场景: 个人照片库有上万张照片,想要快速找到所有包含特定人物或物体的照片。

传统方法:

  • 手动一张张查看
  • 用关键词搜索,但很多照片没有标签
  • 耗时耗力,容易遗漏

使用Chord的方案:

import os
from PIL import Image

def find_photos_with_target(photo_folder, target_description):
    """
    在照片库中查找包含特定目标的照片
    
    Args:
        photo_folder: 照片文件夹路径
        target_description: 要查找的目标描述,如"戴眼镜的男人"
    
    Returns:
        包含目标的照片路径列表
    """
    matching_photos = []
    
    # 遍历所有照片
    for filename in os.listdir(photo_folder):
        if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
            photo_path = os.path.join(photo_folder, filename)
            
            try:
                # 加载图片
                image = Image.open(photo_path)
                
                # 使用Chord定位
                result = model.infer(
                    image=image,
                    prompt=f"找到{target_description}"
                )
                
                # 如果找到了目标
                if result['boxes']:  # 有边界框表示找到了
                    matching_photos.append(photo_path)
                    print(f"找到: {filename} - 发现{len(result['boxes'])}个目标")
                    
            except Exception as e:
                print(f"处理{filename}时出错: {e}")
    
    return matching_photos

# 使用示例
photos_with_dog = find_photos_with_target(
    photo_folder="/path/to/your/photos",
    target_description="狗"
)
print(f"找到 {len(photos_with_dog)} 张包含狗的照片")

效果对比:

  • 传统方法:可能需要数小时甚至数天
  • Chord方案:几分钟到几十分钟(取决于照片数量)
  • 准确率:远高于基于文件名或EXIF信息的搜索

7.2 案例二:电商商品自动标注

场景: 电商平台需要为海量商品图片添加标注信息。

传统流程:

  1. 人工查看每张图片
  2. 手动标注商品位置
  3. 添加商品属性标签
  4. 质检审核 成本高、效率低、一致性差

Chord自动化方案:

def auto_annotate_product(image_path, product_type):
    """
    自动标注商品图片
    
    Args:
        image_path: 商品图片路径
        product_type: 商品类型,如"鞋子"、"包包"、"衣服"
    
    Returns:
        标注结果字典
    """
    # 加载图片
    image = Image.open(image_path)
    
    # 第一步:定位商品主体
    result = model.infer(
        image=image,
        prompt=f"找到图中的{product_type}"
    )
    
    if not result['boxes']:
        return {"status": "未找到商品"}
    
    # 提取主要商品区域(通常第一个框是主体)
    main_box = result['boxes'][0]
    
    # 第二步:识别商品属性(示例)
    attributes = {}
    
    # 识别颜色
    color_result = model.infer(
        image=image.crop(main_box),  # 裁剪出商品区域
        prompt="这个物品的主要颜色是什么"
    )
    attributes['color'] = extract_color_from_text(color_result['text'])
    
    # 识别款式(如果有的话)
    # 这里可以根据具体商品类型添加更多识别逻辑
    
    return {
        "status": "成功",
        "product_box": main_box,
        "attributes": attributes,
        "image_size": result['image_size']
    }

# 批量处理商品图片
product_images = [
    ("shoe1.jpg", "运动鞋"),
    ("bag1.jpg", "手提包"),
    ("dress1.jpg", "连衣裙")
]

for img_file, p_type in product_images:
    annotation = auto_annotate_product(img_file, p_type)
    print(f"{img_file}: {annotation}")

效益分析:

  • 效率提升:从几分钟一张到几秒钟一张
  • 成本降低:减少人工标注工作量
  • 一致性提高:算法标注标准统一
  • 可扩展性:轻松应对商品种类增加

7.3 案例三:安防监控智能分析

场景: 监控视频中实时检测特定目标。

实现思路:

  1. 从视频流中抽取关键帧
  2. 使用Chord定位目标
  3. 记录目标出现的时间和位置
  4. 生成报警或统计报告

代码示例:

import cv2
from datetime import datetime

class SecurityMonitor:
    def __init__(self, target_description):
        """
        初始化监控器
        
        Args:
            target_description: 要监控的目标描述,如"戴帽子的人"
        """
        self.target_desc = target_description
        self.detection_log = []
    
    def process_frame(self, frame, frame_time):
        """
        处理一帧监控画面
        
        Args:
            frame: 视频帧(numpy数组)
            frame_time: 帧时间戳
        
        Returns:
            是否检测到目标
        """
        # 将numpy数组转换为PIL图像
        pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
        
        # 使用Chord检测目标
        result = model.infer(
            image=pil_image,
            prompt=f"找到{self.target_desc}"
        )
        
        if result['boxes']:
            # 记录检测结果
            detection_info = {
                'time': frame_time,
                'count': len(result['boxes']),
                'locations': result['boxes'],
                'frame_size': result['image_size']
            }
            self.detection_log.append(detection_info)
            
            # 在帧上绘制边界框(可选)
            for box in result['boxes']:
                x1, y1, x2, y2 = box
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            
            return True, frame
        else:
            return False, frame
    
    def generate_report(self, start_time, end_time):
        """
        生成检测报告
        """
        relevant_logs = [
            log for log in self.detection_log
            if start_time <= log['time'] <= end_time
        ]
        
        total_detections = sum(log['count'] for log in relevant_logs)
        
        return {
            'period': f"{start_time} 到 {end_time}",
            'total_frames_with_target': len(relevant_logs),
            'total_target_count': total_detections,
            'detection_timeline': relevant_logs
        }

# 使用示例
monitor = SecurityMonitor("戴帽子的人")

# 模拟处理视频流
video_capture = cv2.VideoCapture("security_feed.mp4")

while True:
    ret, frame = video_capture.read()
    if not ret:
        break
    
    current_time = datetime.now()
    detected, annotated_frame = monitor.process_frame(frame, current_time)
    
    if detected:
        print(f"{current_time}: 检测到目标")
        # 可以触发报警或保存帧
    
    # 显示结果(可选)
    cv2.imshow('Security Monitor', annotated_frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture.release()
cv2.destroyAllWindows()

# 生成报告
report = monitor.generate_report(
    start_time=datetime(2024, 1, 1, 8, 0, 0),
    end_time=datetime(2024, 1, 1, 18, 0, 0)
)

应用价值:

  • 实时预警:发现异常目标立即报警
  • 数据统计:分析目标出现规律
  • 证据留存:自动保存相关视频片段
  • 降低负荷:减少人工监控压力

8. 总结与展望

8.1 技术总结

Qwen2.5-VL-Chord视觉定位模型在实际使用中展现出了几个明显优势:

易用性方面

  • 部署简单,基本上开箱即用
  • Web界面友好,不需要编程基础也能操作
  • API设计清晰,方便集成到现有系统

性能表现

  • 定位准确度在常见场景下相当不错
  • 处理速度可以接受,特别是用GPU的时候
  • 支持多种图片格式和尺寸

灵活性

  • 自然语言描述,想找什么直接说
  • 支持多目标同时定位
  • 返回标准坐标格式,方便后续处理

国产芯片适配

  • 对昇腾等国产AI芯片提供了支持
  • 保持了相同的功能和接口
  • 为国产化替代提供了可行方案

8.2 使用建议

基于实际使用经验,给大家几个实用建议:

给新手的建议

  1. 从简单开始:先用明显的目标测试,比如“图中的人”、“汽车”
  2. 描述要具体:颜色、位置、特征越具体越好
  3. 图片质量很重要:清晰、光线好的图片效果更好
  4. 多试几次:同一个目标可以用不同方式描述

给开发者的建议

  1. 批量处理要控制内存:特别是处理大量图片时
  2. 错误处理要完善:网络问题、图片损坏都要考虑到
  3. 结果要验证:重要的应用场景建议人工抽查结果
  4. 日志要详细:方便排查问题

性能优化建议

  1. 图片预处理:调整到合适尺寸再处理
  2. 合理使用缓存:重复使用的图片可以缓存处理结果
  3. 异步处理:大量任务时考虑异步队列
  4. 监控资源使用:特别是GPU内存

8.3 未来展望

视觉定位技术还在快速发展,未来可能会有这些改进:

技术层面

  • 准确度进一步提升,特别是对小目标和复杂场景
  • 处理速度更快,实时性更好
  • 支持更多类型的输入,比如视频流、3D图像

应用层面

  • 更多行业专用版本,比如医疗影像、工业检测
  • 与其他AI能力结合,比如识别后还能分析、推理
  • 移动端部署,在手机、嵌入式设备上使用

易用性

  • 描述语言更自然,甚至支持对话式交互
  • 自动学习用户习惯,越用越准
  • 更简单的部署方式,一键安装配置

8.4 最后的话

Qwen2.5-VL-Chord作为一个开箱即用的视觉定位工具,确实降低了很多使用门槛。无论你是想快速验证一个想法,还是要在产品中集成视觉定位能力,它都提供了一个不错的起点。

国产AI芯片的适配更是让这个工具有了更广阔的应用空间。在强调自主可控的今天,能有这样既好用又支持国产硬件的工具,对很多企业和开发者来说都是好消息。

技术总是在不断进步,今天的先进工具可能明天就会变得普通。但重要的是,我们现在就可以用这些工具解决实际问题,创造实际价值。希望这篇教程能帮你快速上手Chord模型,用它做出有意思、有价值的东西。

记住,最好的学习方式就是动手试试。上传一张图片,输入一段描述,看看AI能不能准确找到你要的东西。在这个过程中,你可能会发现新的用法,遇到新的问题,也会有新的收获。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐