InternVL-Chat-V1-5:打破模态壁垒,重新定义多模态理解范式

InternVL-Chat-V1-5:打破模态壁垒,重新定义多模态理解范式

【免费下载链接】InternVL-Chat-V1-5 【免费下载链接】InternVL-Chat-V1-5 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/InternVL-Chat-V1-5

你是否还在为多模态模型无法同时处理高分辨率图像、长文本对话和视频序列而烦恼?是否因开源模型与商业产品间的性能鸿沟而望而却步? InternVL-Chat-V1-5 凭借三大突破性技术设计,将开源多模态理解推向新高度——动态4K分辨率处理、跨模态深度融合架构、双语文本理解能力,让AI真正"看懂"世界并流畅对话。本文将系统拆解其技术原理、实战部署方案与前沿应用场景,助你掌握下一代多模态交互开发精髓。

读完本文你将获得:

  • 动态分块预处理技术的底层实现逻辑与代码示例
  • 单GPU/多GPU环境下的优化部署指南(含8/16位量化方案)
  • 图像/视频/文本多模态交互的10种核心应用范式
  • 工业级性能调优参数与常见问题解决方案
  • 完整项目仓库与资源链接(含国内镜像加速地址)

技术架构:三引擎驱动的多模态革命

InternVL-Chat-V1-5采用"视觉编码器-跨模态桥接器-语言模型"的三阶段架构,通过创新设计打破传统多模态模型的性能瓶颈。其核心突破在于将视觉理解精度、模态对齐深度与交互流畅度提升到新层次,构建起可与商业模型比肩的开源技术方案。

1. 增强型视觉编码器(InternViT-6B)

连续学习策略赋予视觉基础模型持续进化能力,通过在大规模图像数据集上的增量训练,使InternViT-6B在保留基础视觉特征提取能力的同时,显著提升对细粒度细节、复杂场景和文本信息的识别精度。该编码器采用448px基础分辨率,配合动态分块机制可处理最高4K分辨率输入,远超同类模型的固定分辨率限制。

# 视觉编码器核心参数配置
vision_config = {
    "image_size": 448,          # 基础分辨率
    "patch_size": 14,           # 图像分块大小
    "num_channels": 3,          # 输入通道数(RGB)
    "embed_dim": 1024,          # 特征嵌入维度
    "depth": 39,                # Transformer层数
    "num_heads": 16,            # 注意力头数
    "mlp_ratio": 4.0,           # MLP隐藏层比例
    "qkv_bias": True,           # Query/Key/Value偏置
    "drop_path_rate": 0.1       # 随机深度比率
}

2. 动态高分辨率处理机制

传统多模态模型受限于固定输入分辨率,在处理高清图像时往往面临细节丢失或显存溢出问题。InternVL-Chat-V1-5创新的动态分块预处理技术,根据图像宽高比自动计算最优分块方案,将图像分割为1-40个448×448像素的图块(tiles),实现从低清小图到4K大图的自适应处理。

def dynamic_preprocess(image, min_num=1, max_num=12, image_size=448):
    orig_width, orig_height = image.size
    aspect_ratio = orig_width / orig_height  # 计算原始图像宽高比
    
    # 生成可能的分块比例组合(i×j个图块)
    target_ratios = set(
        (i, j) for n in range(min_num, max_num + 1) 
        for i in range(1, n + 1) for j in range(1, n + 1) 
        if i * j <= max_num and i * j >= min_num
    )
    
    # 寻找最匹配的分块比例
    best_ratio = find_closest_aspect_ratio(aspect_ratio, target_ratios, orig_width, orig_height, image_size)
    
    # 计算目标尺寸与分块数量
    target_width = image_size * best_ratio[0]
    target_height = image_size * best_ratio[1]
    blocks = best_ratio[0] * best_ratio[1]
    
    # resize并分割图像
    resized_img = image.resize((target_width, target_height))
    processed_images = []
    for i in range(blocks):
        # 计算每个图块的坐标
        box = (
            (i % (target_width // image_size)) * image_size,
            (i // (target_width // image_size)) * image_size,
            ((i % (target_width // image_size)) + 1) * image_size,
            ((i // (target_width // image_size)) + 1) * image_size
        )
        processed_images.append(resized_img.crop(box))
    
    # 添加缩略图作为全局上下文(可选)
    if len(processed_images) > 1:
        processed_images.append(image.resize((image_size, image_size)))
    
    return processed_images

分块决策流程如下:

  1. 计算输入图像宽高比(orig_width/orig_height)
  2. 生成候选分块比例集合(i×j,1≤i,j≤max_num)
  3. 匹配最优比例(最小宽高比差异+最大有效面积)
  4. 按比例resize并切割为448px×448px图块
  5. 可选添加全局缩略图作为上下文补充

这种动态处理策略使模型能在保持计算效率的同时,完整保留高分辨率图像的细节信息,特别适合文档分析、遥感图像解读和精密仪器检测等场景。

3. 跨模态融合架构(MLP桥接器)

视觉特征与语言特征的有效对齐是多模态模型性能的关键。InternVL-Chat-V1-5采用多层感知机(MLP)桥接器实现跨模态信息转换,通过精心设计的特征映射网络,将视觉编码器输出的1024维特征向量转换为与语言模型兼容的4096维嵌入空间,同时保留图像的空间结构和语义信息。

mermaid

桥接器采用两层非线性变换结构,中间引入GELU激活函数和层归一化操作,有效缓解模态差异导致的特征失配问题:

class MLPBridge(nn.Module):
    def __init__(self, vision_dim=1024, language_dim=4096, hidden_dim=2048):
        super().__init__()
        self.proj = nn.Sequential(
            nn.Linear(vision_dim, hidden_dim),
            nn.LayerNorm(hidden_dim),
            nn.GELU(),
            nn.Linear(hidden_dim, language_dim)
        )
        
    def forward(self, vision_features):
        # 视觉特征形状: [batch_size, num_tiles, vision_dim]
        return self.proj(vision_features)  # 输出形状: [batch_size, num_tiles, language_dim]

4. 增强型语言模型(InternLM2-Chat-20B)

作为交互输出的核心引擎,InternLM2-Chat-20B在保留强大语言理解与生成能力的基础上,通过多模态指令微调显著提升跨模态对话流畅度。该模型支持8192 tokens的上下文窗口,可处理长对话历史和复杂指令,同时针对中文语境进行深度优化,在双语任务中表现尤为出色。

模型核心参数

  • 总参数量:200亿(20B)
  • Transformer层数:48层
  • 隐藏层维度:4096
  • 注意力头数:32
  • 上下文长度:8192 tokens
  • 预训练数据:1.6万亿tokens(多语言)

环境部署:从单GPU到分布式系统

InternVL-Chat-V1-5虽参数量达255亿(25.5B),但通过优化部署策略和量化技术,可在不同硬件环境下高效运行。以下提供从个人PC到企业级服务器的完整部署方案,帮助开发者根据自身条件选择最优配置。

1. 硬件环境要求

部署方案最低配置推荐配置适用场景
单GPU(16位)NVIDIA RTX 3090 (24GB)NVIDIA RTX 4090 (24GB)开发测试、轻量级应用
单GPU(8位)NVIDIA RTX 2080Ti (11GB)NVIDIA RTX 3090 (24GB)资源受限环境、边缘设备
多GPU(16位)2×RTX 30904×A100 (40GB)生产环境、高并发服务
多GPU(8位)2×RTX 2080Ti2×A100 (40GB)平衡性能与成本

2. 环境准备与依赖安装

首先克隆项目仓库(国内镜像地址):

git clone https://gitcode.com/hf_mirrors/ai-gitcode/InternVL-Chat-V1-5
cd InternVL-Chat-V1-5

创建并激活conda环境:

conda create -n internvl python=3.10 -y
conda activate internvl

安装核心依赖包:

# 基础依赖
pip install torch==2.1.0 torchvision==0.16.0 transformers==4.37.2
# 量化支持
pip install bitsandbytes==0.41.1
# 图像处理
pip install pillow==10.1.0 decord==0.6.0 opencv-python==4.8.1.78
# 加速计算
pip install flash-attn==2.4.2 einops==0.7.0
# 服务部署
pip install lmdeploy==0.5.3 fastapi==0.104.1 uvicorn==0.24.0.post1

3. 模型加载与基础配置

根据硬件条件选择合适的加载方案,以下提供四种典型配置的实现代码:

方案1:16位精度(bfloat16)- 单GPU
import torch
from transformers import AutoTokenizer, AutoModel

# 模型路径(本地或镜像仓库)
model_path = "hf_mirrors/ai-gitcode/InternVL-Chat-V1-5"

# 加载模型与分词器
model = AutoModel.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16,       # 使用bfloat16精度
    low_cpu_mem_usage=True,           # 低CPU内存占用模式
    use_flash_attn=True,              # 启用Flash Attention加速
    trust_remote_code=True            # 信任远程代码(自定义模型类)
).eval().cuda()                       # 设为评估模式并移至GPU

tokenizer = AutoTokenizer.from_pretrained(
    model_path,
    trust_remote_code=True,
    use_fast=False                    # 禁用fast tokenizer,确保兼容性
)
方案2:8位量化 - 资源受限环境
model = AutoModel.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16,
    load_in_8bit=True,                # 启用8位量化
    device_map="auto",                # 自动设备映射
    low_cpu_mem_usage=True,
    use_flash_attn=True,
    trust_remote_code=True
).eval()

⚠️ 注意:4位量化因视觉编码器量化误差较大,可能导致图像理解能力显著下降,官方不推荐使用。如必须在极端资源受限环境部署,建议仅对语言模型部分进行4位量化。

方案3:多GPU分布式部署

当单GPU显存不足时,可采用模型并行策略将不同组件分配到多个GPU:

import math
import torch
from transformers import AutoTokenizer, AutoModel

def split_model(model_name):
    """生成多GPU设备映射配置"""
    device_map = {}
    world_size = torch.cuda.device_count()  # 获取GPU数量
    # 根据模型类型确定语言模型层数
    num_layers = {'InternVL-Chat-V1-5': 48}[model_name]
    
    # 第1个GPU需承载视觉模型,分配较少语言层
    num_layers_per_gpu = math.ceil(num_layers / (world_size - 0.5))
    num_layers_per_gpu = [num_layers_per_gpu] * world_size
    num_layers_per_gpu[0] = math.ceil(num_layers_per_gpu[0] * 0.5)
    
    layer_cnt = 0
    for i, num_layer in enumerate(num_layers_per_gpu):
        for _ in range(num_layer):
            device_map[f'language_model.model.layers.{layer_cnt}'] = i
            layer_cnt += 1
    
    # 固定组件设备分配
    device_map['vision_model'] = 0
    device_map['mlp1'] = 0
    device_map['language_model.model.tok_embeddings'] = 0
    device_map['language_model.output'] = 0
    device_map['language_model.lm_head'] = 0
    
    return device_map

# 多GPU加载模型
device_map = split_model('InternVL-Chat-V1-5')
model = AutoModel.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16,
    device_map=device_map,            # 使用自定义设备映射
    low_cpu_mem_usage=True,
    use_flash_attn=True,
    trust_remote_code=True
).eval()

4. 模型验证与基础测试

加载完成后,通过简单图像描述任务验证模型功能:

from PIL import Image

# 图像预处理
def load_image(image_path, max_num=12):
    image = Image.open(image_path).convert('RGB')
    transform = build_transform(input_size=448)  # 定义在utils中
    images = dynamic_preprocess(image, max_num=max_num)  # 动态分块
    pixel_values = [transform(img) for img in images]
    return torch.stack(pixel_values).to(torch.bfloat16).cuda()

# 加载示例图像
pixel_values = load_image('./examples/image1.jpg', max_num=12)

# 生成配置
generation_config = dict(
    max_new_tokens=1024,    # 最大生成长度
    do_sample=True,         # 启用采样生成
    temperature=0.8,        # 采样温度
    top_p=0.8,              # 核采样参数
    repetition_penalty=1.05 # 重复惩罚
)

# 单图描述
question = '<image>\n请详细描述这张图片的内容'
response = model.chat(tokenizer, pixel_values, question, generation_config)
print(f'用户: {question}\n助手: {response}')

预期输出应包含图像中的物体识别、场景描述和空间关系分析,验证模型的基础多模态理解能力。

核心功能:多模态交互全攻略

InternVL-Chat-V1-5突破传统模型的单模态限制,支持图像、视频、文本的深度融合交互。以下详解10种核心应用场景的实现方法,覆盖从基础功能到高级应用的完整技术栈。

1. 单图像理解与交互

基础描述任务:对图像内容进行全面解析,包括物体识别、场景判断、属性描述等。

# 单图单轮对话
pixel_values = load_image('./examples/image1.jpg', max_num=12).to(torch.bfloat16).cuda()
question = '<image>\n请描述图片中的场景、物体和它们之间的关系'
response = model.chat(tokenizer, pixel_values, question, generation_config)

视觉问答(VQA):针对图像内容进行特定问题解答,支持事实性问答和推理型问答。

# 多轮视觉问答
question1 = '<image>\n图片中有多少只动物?分别是什么种类?'
response1, history = model.chat(
    tokenizer, pixel_values, question1, 
    generation_config, history=None, return_history=True
)
print(f'用户: {question1}\n助手: {response1}')

question2 = '这些动物在做什么?它们的行为有什么生态意义?'
response2, history = model.chat(
    tokenizer, pixel_values, question2, 
    generation_config, history=history, return_history=True
)
print(f'用户: {question2}\n助手: {response2}')

2. 多图像对比与分析

支持同时处理多张图像,进行对比分析、差异识别和关联推理,适用于产品质检、场景对比等场景。

# 加载多张图像
pixel_values1 = load_image('./examples/image1.jpg', max_num=12).to(torch.bfloat16).cuda()
pixel_values2 = load_image('./examples/image2.jpg', max_num=12).to(torch.bfloat16).cuda()
pixel_values = torch.cat((pixel_values1, pixel_values2), dim=0)
num_patches_list = [pixel_values1.size(0), pixel_values2.size(0)]  # 记录各图像分块数

# 多图对比提问
question = 'Image-1: <image>\nImage-2: <image>\n比较这两张图片的异同点,从场景、物体和色彩三个方面分析'
response, history = model.chat(
    tokenizer, pixel_values, question, 
    generation_config, num_patches_list=num_patches_list,
    history=None, return_history=True
)
print(f'用户: {question}\n助手: {response}')

3. 视频内容理解与交互

通过帧采样技术将视频转换为图像序列,实现对动态场景的理解、动作识别和事件描述。支持自定义采样频率和时长范围,平衡处理效率与内容完整性。

def load_video(video_path, bound=None, input_size=448, max_num=1, num_segments=32):
    """加载视频并提取关键帧"""
    vr = VideoReader(video_path, ctx=cpu(0))  # 使用CPU解码视频
    max_frame = len(vr) - 1
    fps = float(vr.get_avg_fps())
    
    # 计算采样帧索引(默认32段,每段取中间帧)
    frame_indices = get_index(bound, fps, max_frame, num_segments=num_segments)
    
    pixel_values_list, num_patches_list = [], []
    transform = build_transform(input_size=input_size)
    
    for frame_index in frame_indices:
        img = Image.fromarray(vr[frame_index].asnumpy()).convert('RGB')
        img_tiles = dynamic_preprocess(img, max_num=max_num)  # 每帧分块
        pixel_values = torch.stack([transform(tile) for tile in img_tiles])
        pixel_values_list.append(pixel_values)
        num_patches_list.append(pixel_values.shape[0])
    
    return torch.cat(pixel_values_list), num_patches_list

# 加载视频并提问
video_path = './examples/red-panda.mp4'
pixel_values, num_patches_list = load_video(video_path, num_segments=8, max_num=1)
pixel_values = pixel_values.to(torch.bfloat16).cuda()

# 构建视频提问前缀(标记各帧位置)
video_prefix = ''.join([f'Frame{i+1}: <image>\n' for i in range(len(num_patches_list))])
question = video_prefix + '视频中的小熊猫在做什么?描述其动作变化过程'

response, history = model.chat(
    tokenizer, pixel_values, question, 
    generation_config, num_patches_list=num_patches_list,
    history=None, return_history=True
)
print(f'用户: {question}\n助手: {response}')

4. 批量处理与高效推理

通过batch_chat接口同时处理多个独立任务,大幅提升吞吐量,适用于数据标注、内容审核等需要批量处理的场景。

# 批量处理多张图像
pixel_values1 = load_image('./examples/image1.jpg', max_num=12).to(torch.bfloat16).cuda()
pixel_values2 = load_image('./examples/image2.jpg', max_num=12).to(torch.bfloat16).cuda()
pixel_values = torch.cat((pixel_values1, pixel_values2), dim=0)
num_patches_list = [pixel_values1.size(0), pixel_values2.size(0)]

# 批量提问列表
questions = ['<image>\n详细描述图像内容', '<image>\n总结图像中的关键信息']

# 批量推理
responses = model.batch_chat(
    tokenizer, pixel_values, 
    num_patches_list=num_patches_list,
    questions=questions,
    generation_config=generation_config
)

# 输出结果
for q, r in zip(questions, responses):
    print(f'用户: {q}\n助手: {r}\n---')

5. 流式输出与实时交互

采用流式生成技术,边生成边返回结果,显著降低用户等待感,提升交互体验。适用于聊天机器人、实时助手等场景。

from transformers import TextIteratorStreamer
from threading import Thread

# 初始化流式生成器
streamer = TextIteratorStreamer(
    tokenizer, 
    skip_prompt=True, 
    skip_special_tokens=True, 
    timeout=10
)

# 在独立线程中运行模型推理
generation_config = dict(
    max_new_tokens=1024, 
    do_sample=True,
    streamer=streamer  # 指定流式生成器
)

thread = Thread(target=model.chat, kwargs=dict(
    tokenizer=tokenizer,
    pixel_values=pixel_values,
    question=question,
    generation_config=generation_config,
    history=None
))
thread.start()

# 实时接收并打印生成结果
generated_text = ''
for new_text in streamer:
    generated_text += new_text
    print(new_text, end='', flush=True)  # 实时输出

性能优化:参数调优与常见问题

InternVL-Chat-V1-5的性能表现高度依赖部署配置和参数选择。通过科学调优,可在保持生成质量的同时显著提升推理速度、降低资源消耗。以下总结工业级优化策略与常见问题解决方案。

1. 推理速度优化参数

参数推荐值作用注意事项
max_new_tokens512-1024控制生成文本长度过长会增加延迟,建议根据任务动态调整
temperature0.6-0.9控制随机性事实性任务建议0.3-0.5,创意性任务0.7-1.0
top_p0.7-0.9核采样阈值与temperature配合使用,通常保持0.8左右
use_flash_attnTrue启用Flash注意力需安装flash-attn库,可提速30-50%
max_num(分块)4-12图像分块数量文档类图像建议12,自然场景建议4-8
num_segments(视频)8-32视频采样段数平衡时间分辨率与计算量

2. 显存优化策略

  • 分块处理:通过max_num参数控制单次处理的图像分块数量,降低瞬时显存占用
  • 梯度检查点:启用use_cache=False牺牲部分速度换取显存节省(不推荐实时场景)
  • 模型并行:多GPU环境下使用设备映射策略,将视觉模型与语言模型分配到不同GPU
  • 按需加载:仅在处理图像时加载视觉编码器,纯文本对话时可临时卸载

3. 常见问题解决方案

Q1: 图像描述过于简略或不准确?

A1: 尝试以下优化:

  • 调整提问方式,增加引导性提示(如"请从颜色、形状、材质三个方面描述...")
  • 提高分块数量max_num=12,确保细节信息被捕捉
  • 降低temperature至0.5左右,减少创造性发挥
  • 检查图像预处理是否正确,确保动态分块功能正常工作
Q2: 多GPU部署时出现设备不匹配错误?

A2: 确认设备映射配置正确:

# 验证设备映射是否合理
for key, value in device_map.items():
    print(f"{key}: GPU {value}")

确保视觉模型组件全部部署在同一GPU,语言模型各层均匀分布。

Q3: 视频处理速度慢或内存溢出?

A3: 优化视频采样参数:

  • 减少num_segments至8-16(默认32)
  • 设置max_num=1禁用视频帧分块
  • 使用bound=(start_time, end_time)截取关键片段
  • 预处理时降低input_size=224(牺牲精度换取速度)
Q4: 中文生成出现语法错误或夹杂英文?

A4: 语言模型调优:

  • 增加中文语料指令微调(参考项目GitHub微调指南)
  • 设置generation_config={'do_sample': False}使用贪婪解码
  • 在提问中明确指定语言(如"请用中文回答...")
  • 更新至最新版本tokenizer,确保中文词汇覆盖完整

应用场景与未来展望

InternVL-Chat-V1-5凭借强大的多模态理解能力,正在推动多个领域的智能化升级。其开源特性与高性能优势,使其成为学术界研究和工业界应用的理想选择。

1. 核心应用领域

智能内容创作:自动生成图像描述、视频字幕和多模态故事,辅助内容创作者提升效率。通过结合图像理解与文本生成能力,可快速将视觉素材转化为生动叙事。

工业质检系统:同时分析产品图像和规格文档,自动识别缺陷、测量尺寸偏差,生成标准化检测报告。动态分块技术特别适合检测细微瑕疵和复杂结构产品。

医疗辅助诊断:解读医学影像(X光、CT、病理切片)并结合病历文本,提供初步诊断建议和治疗方案参考。高分辨率处理能力可捕捉早期病变特征。

智能教育系统:通过分析教材插图、实验视频和学生笔记,构建个性化学习路径,实现多模态互动教学。支持图文结合的问题解答和概念可视化。

自动驾驶感知:融合摄像头图像、激光雷达数据和交通标志文本,构建更全面的环境感知系统,提升复杂场景下的决策安全性。

2. 项目资源与社区

  • 项目仓库:https://gitcode.com/hf_mirrors/ai-gitcode/InternVL-Chat-V1-5
  • 官方文档:https://internvl.readthedocs.io/
  • 模型卡片:https://huggingface.co/OpenGVLab/InternVL-Chat-V1-5
  • 学术论文:https://arxiv.org/abs/2404.16821(InternVL 1.5技术报告)
  • 社区支持:GitHub Discussions与QQ交流群(群号见官方文档)

3. 未来发展方向

InternVL团队已发布更新版本InternVL2_5-26B,在以下方面实现进一步突破:

  • 更强的视觉定位能力,支持区域提问与图像编辑
  • 多轮对话记忆增强,支持更长上下文交互
  • 推理效率提升50%,降低部署门槛
  • 新增音频模态支持,迈向全模态理解

建议开发者持续关注项目更新,及时获取最新功能与优化。

总结:多模态AI的开源里程碑

InternVL-Chat-V1-5通过动态高分辨率处理、增强型跨模态融合和优化部署策略三大创新,将开源多模态模型的性能推向新高度。其255亿参数规模虽看似庞大,但通过本文介绍的量化技术、设备映射和参数调优方法,可在普通GPU环境下高效运行,为开发者提供了探索下一代AI交互的强大工具。

从技术架构解析到实战部署指南,从核心功能演示到性能优化策略,本文系统梳理了InternVL-Chat-V1-5的开发全流程。无论你是AI研究者、应用开发者还是技术爱好者,都能从中找到适合自己的切入点,开启多模态应用开发之旅。

随着多模态技术的持续演进,我们正迈向"万物互联,模态互通"的智能新纪元。InternVL-Chat-V1-5作为这一进程的重要里程碑,不仅提供了强大的技术工具,更开创了开源协作推动AI进步的新模式。期待开发者们基于此平台创造出更多创新应用,共同推动多模态理解技术的边界拓展。

收藏本文,随时查阅部署指南与代码示例;关注项目仓库,获取最新模型更新与功能优化;分享给团队,共同探索多模态交互的无限可能。下一篇我们将深入探讨InternVL系列模型的微调技术,教你如何针对特定场景定制专属多模态AI助手。

附录:项目资源与链接

  • 国内镜像仓库:https://gitcode.com/hf_mirrors/ai-gitcode/InternVL-Chat-V1-5
  • 官方GitHub:https://github.com/OpenGVLab/InternVL
  • 技术文档:https://internvl.readthedocs.io/
  • 在线演示:https://internvl.opengvlab.com/
  • 模型权重:https://huggingface.co/OpenGVLab/InternVL-Chat-V1-5
  • 评估工具包:https://github.com/open-compass/VLMEvalKit
  • 微调代码:https://github.com/InternLM/xtuner

【免费下载链接】InternVL-Chat-V1-5 【免费下载链接】InternVL-Chat-V1-5 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/InternVL-Chat-V1-5

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值