Cosmos Tokenizer


一、关于 Cosmos Tokenizer

NVIDIA Cosmos Tokenizer,是一套图像和视频 Tokenizer ,推动了视觉标记化的最先进水平,为大型自回归Transformers (如LLM)或扩散生成器的可扩展、稳健和高效开发铺平了道路。


Cosmos Tokenizer是NVIDIA Cosmos的核心组件,这是一个开发者优先的视频基础模型平台,旨在帮助物理人工智能开发者更好、更快地构建他们的物理人工智能系统。请查看 演示视频

Continuous(C)Discrete(D)
图像(I)Cosmos-Tokenizer-CICosmos-Tokenizer-DI
视频(V)Cosmos-Tokenizer-CVCosmos-Tokenizer-DV

cosmos-tokenizer.mp4


给定图像或视频,Cosmos Tokenizer 输出连续潜在或离散标记。

Cosmos Tokenizer实现了8倍或16倍的空间压缩率和4倍或8倍的时间压缩因子,导致总压缩因子高达2048倍(=8x16x16)。

Cosmos Tokenizer提供的总压缩比最先进的(SOTA)方法多8倍,同时保持更高的画质,运行速度比最好的SOTA标记器快12倍。

Arch


License

  • 模型许可位于 NVIDIA Open Model License;NVIDIA 允许:

    • 模型在商业上可用。
    • 您可以自由创建和分发衍生模型。
    • NVIDIA不声称对使用模型或衍生模型生成的任何输出拥有所有权。
  • GitHub代码:此存储库在Apache 2.0许可下获得许可。


二、安装

  • 克隆源代码
git clone https://github.com/NVIDIA/Cosmos-Tokenizer.git
cd Cosmos-Tokenizer

  • 通过pip安装
apt-get install -y ffmpeg
pip3 install -e .

优选地,使用提供的Dockerfile构建docker映像

docker build -t cosmos-docker -f Dockerfile .

# You can run the container as:
docker run --gpus all -it --rm -v /home/${USER}:/home/${USER} \
    --workdir ${PWD} cosmos-docker /bin/bash

三、从Hugging Face 下载预训练 Checkpoints

我们在Hugging Face 上托管了10个Cosmos-Tokenizer模型,模型名称如下。您可以使用此片段下载:

from huggingface_hub import login, snapshot_download
import os

login(token="<YOUR-HF-TOKEN>", add_to_git_credential=True)
model_names = [
        "Cosmos-0.1-Tokenizer-CI8x8",
        "Cosmos-0.1-Tokenizer-CI16x16",
        "Cosmos-0.1-Tokenizer-CV4x8x8",
        "Cosmos-0.1-Tokenizer-CV8x8x8",
        "Cosmos-0.1-Tokenizer-CV8x16x16",
        "Cosmos-0.1-Tokenizer-DI8x8",
        "Cosmos-0.1-Tokenizer-DI16x16",
        "Cosmos-0.1-Tokenizer-DV4x8x8",
        "Cosmos-0.1-Tokenizer-DV8x8x8",
        "Cosmos-0.1-Tokenizer-DV8x16x16",
        "Cosmos-1.0-Tokenizer-CV8x8x8",
        "Cosmos-1.0-Tokenizer-DV8x16x16",
]
for model_name in model_names:
    hf_repo = "nvidia/" + model_name
    local_dir = "pretrained_ckpts/" + model_name
    os.makedirs(local_dir, exist_ok=True)
    print(f"downloading {model_name}...")
    snapshot_download(repo_id=hf_repo, local_dir=local_dir)

在 checkpoint 库pretrained_ckpts/{model_name}下,我们提供了编码器、解码器和完整的自动编码器JIT模型。

├── Cosmos-Tokenizer-DV4x8x8/
│   ├── encoder.jit
│   ├── decoder.jit
│   ├── autoencoder.jit

四、运行代码

您可以使用以下示例命令对图像或视频进行编码和解码。
对于每一个,相同的命令都适用于连续和离散标记化。只需提供正确的JIT编译ckpt到checkpoint_enccheckpoint_dec或完整的自动编码器ckpt到checkpoint


1、编码到连续潜在空间

import torch
from cosmos_tokenizer.video_lib import CausalVideoTokenizer

model_name = "Cosmos-Tokenizer-CV4x8x8"
input_tensor = torch.randn(1, 3, 9, 512, 512).to('cuda').to(torch.bfloat16)  # [B, C, T, H, W]
encoder = CausalVideoTokenizer(checkpoint_enc=f'pretrained_ckpts/{model_name}/encoder.jit')
(latent,) = encoder.encode(input_tensor)
torch.testing.assert_close(latent.shape, (1, 16, 3, 64, 64))

# The input tensor can be reconstructed by the decoder as:
decoder = CausalVideoTokenizer(checkpoint_dec=f'pretrained_ckpts/{model_name}/decoder.jit')
reconstructed_tensor = decoder.decode(latent)
torch.testing.assert_close(reconstructed_tensor.shape, input_tensor.shape)

latent将具有形状(1, 16, 3, 64, 64),其中三个潜元中的第一个表示第一帧,并且C=16是潜元的通道数。


2、编码成离散 token

import torch
from cosmos_tokenizer.video_lib import CausalVideoTokenizer

model_name = "Cosmos-Tokenizer-DV4x8x8"
input_tensor = torch.randn(1, 3, 9, 512, 512).to('cuda').to(torch.bfloat16)  # [B, C, T, H, W]
encoder = CausalVideoTokenizer(checkpoint_enc=f'pretrained_ckpts/{model_name}/encoder.jit')
(indices, codes) = encoder.encode(input_tensor)
torch.testing.assert_close(indices.shape, (1, 3, 64, 64))
torch.testing.assert_close(codes.shape, (1, 6, 3, 64, 64))

# The input tensor can be reconstructed by the decoder as:
decoder = CausalVideoTokenizer(checkpoint_dec=f'pretrained_ckpts/{model_name}/decoder.jit')
reconstructed_tensor = decoder.decode(indices)
torch.testing.assert_close(reconstructed_tensor.shape, input_tensor.shape)

这些indices将具有形状(1, 3, 64, 64)并包含范围[1..64K]内的积分值,其中三个积分映射中的第一个表示第一帧。codes将包含形状为(1, 6, 3, 64, 64)的预量化连续潜在值,其中C=6表示FSQ级别的数量。


五、Torchscript(PyTorch JIT)推理API

以下说明在test_data/中提供的示例图和视频上运行各种标记器。

  • 自动编码图像。接受输入图像,并输出通过解码编码潜伏期获得的图像的重建。
# Autoencoding images using `Cosmos-CI` with a compression rate of 8x8.
model_name="Cosmos-Tokenizer-CI8x8"
python3 -m cosmos_tokenizer.image_cli \
    --image_pattern 'test_data/image.png' \
    --checkpoint_enc pretrained_ckpts/${model_name}/encoder.jit \
    --checkpoint_dec pretrained_ckpts/${model_name}/decoder.jit

如果未指定--output_dir,则可以在test_data/reconstructions/image.png中找到重建图像。


  • 自动编码视频。接受输入视频,并输出通过解码编码潜伏期获得的视频重建。
# Autoencoding videos using `Cosmos-DV` with a compression rate of 4x8x8.
model_name="Cosmos-Tokenizer-DV4x8x8"
python3 -m cosmos_tokenizer.video_cli \
    --video_pattern 'test_data/video.mp4' \
    --checkpoint_enc pretrained_ckpts/${model_name}/encoder.jit \
    --checkpoint_dec pretrained_ckpts/${model_name}/decoder.jit

如果没有指定--output_dir,那么你可以在test_data/reconstructions/video.mp4找到重建的视频。


六、PyTorch 推理API

要在本机PyTorch中运行标记器,请使用--mode=torch附加命令。
在PyTorch模式下,模型由本机网络定义脚本构建,这需要提供额外的参数来配置模型以进行实例化。

例如,要实例化空间压缩因子为8的Cosmos-DI,请附加以下命令行参数:

  • --mode=torch
  • --tokenizer_type=DI
  • --spatial_compression=8

请注意--checkpoint_enc--checkpoint_dec--checkpoint仍然应该引用JIT文件。
必要的state_dict将从加载的JIT模型中提取,以初始化构建的本机PyTorch模型的权重。

# Autoencoding images using `Cosmos-DI` with a compression rate of 8x8.
model_name="Cosmos-Tokenizer-DI8x8"
python3 -m cosmos_tokenizer.image_cli \
    --image_pattern 'test_data/*.png' \
    --mode=torch \
    --tokenizer_type=DI \
    --spatial_compression=8 \
    --checkpoint_enc pretrained_ckpts/${model_name}/encoder.jit \
    --checkpoint_dec pretrained_ckpts/${model_name}/decoder.jit

要实例化时间因子为8、空间压缩因子为8的Cosmos-CV,请附加以下命令行参数:

  • --mode=torch
  • --tokenizer_type=CV
  • --temporal_compression=8
  • --spatial_compression=8
# Autoencoding videos using `Cosmos-CV` with a compression rate of 8x8x8.
model_name="Cosmos-Tokenizer-CV8x8x8"
python3 -m cosmos_tokenizer.video_cli \
    --video_pattern 'test_data/*.mp4' \
    --mode=torch \
    --tokenizer_type=CV \
    --temporal_compression=8 \
    --spatial_compression=8 \
    --checkpoint_enc pretrained_ckpts/${model_name}/encoder.jit \
    --checkpoint_dec pretrained_ckpts/${model_name}/decoder.jit

七、使用NeMo(JIT/TensorRT)进行推理和数据集标记化

TensorRT推理即将推出,它将在NeMo存储库内的Cosmos Tokenizer README中提供


1、JIT 推断

请按照此处的说明从GitHubmain分支安装NeMo。

运行以下代码来标记视频:

import torch
from nemo.collections.common.video_tokenizers.cosmos_vision_tokenizer import CausalVideoTokenizer
model_name = "Cosmos-Tokenizer-CV4x8x8"
model = CausalVideoTokenizer.from_pretrained(model_name)
input_tensor = torch.randn(1, 3, 9, 512, 512).to('cuda').to(torch.bfloat16)
(latent, ) = model.encode(input_tensor)

2、数据集 tokenization 和多模态模型训练

请参阅NeMo存储库中的Cosmos Tokenizer README,了解使用Cosmos Tokenizer创建多模态训练数据集的其他示例。


八、评估

Arch


性能

Arch


TokenBench

https://github.com/NVlabs/TokenBench

TokenBench是我们策划的一个全面的基准,用于标准化Cosmos-Tokenizer的评估。它涵盖了广泛的领域,包括机器人操作、驾驶、以自我为中心和网络视频。它由高分辨率、长时长的视频组成,旨在对视频标记器进行基准测试。我们已经在github.com/NVlabs/TokenBench公开发布了TokenBench。


2025-01-29(三)

<think>好的,用户询问的是关于“cos13487”的IT相关内容。首先,我需要分析这个关键词的可能含义。根据用户提供的引用资料,发现有三个相关的引用链接。引用1和2提到了Cosmos Tokenizer世界模型开发平台,可能与自然语言处理或机器学习相关。引用3是关于腾讯云函数操作COS(云对象存储)的例程。 “cos13487”中的“cos”可能指代多个内容。在IT领域,常见的“COS”有腾讯云的对象存储服务(Cloud Object Storage,简称COS),或者是计算机科学中的术语,如cos函数(余弦)。另外,也可能指代某种特定的项目编号或产品型号,如Cosmos相关的工具或模型。 接下来,检查引用资料中的内容。引用1提到Cosmos Tokenizer的TensorRT推理即将推出,而引用2介绍了Cosmos作为世界模型开发平台的特点和使用示例。引用3则是腾讯云函数操作COS的实例。因此,用户提到的“cos13487”可能与这些内容相关,但具体编号13487可能代表某个特定的模型版本、问题编号或存储路径。 考虑到用户可能想查找的是腾讯云COS相关的技术内容,比如错误代码、存储操作或云函数集成。例如,错误代码13487可能在操作COS时出现,或者是一个特定的API编号。不过,现有的引用中并没有明确提到13487这个编号,需要进一步推断。 另外,用户的问题中包含了三个引用链接,其中引用3提到了使用云函数列举COS文件,并给出了请求ID等信息。可能用户在使用腾讯云函数时遇到了问题,或者想了解如何通过云函数处理COS中的文件,而13487可能是某个具体的请求ID或示例代码中的部分。 综合来看,用户可能是在使用腾讯云COS服务时遇到了与“cos13487”相关的问题,或者需要了解该编号所指的具体内容。但由于现有引用中没有直接提到13487,可能需要建议用户检查具体的错误日志、文档或联系技术支持获取更多信息。同时,可以引导用户参考已有的腾讯云COS例程,如引用3中的云函数操作示例,或Cosmos Tokenizer的相关资料。</think>关于cos13487的IT相关内容,根据现有资料分析可能存在以下关联方向: ### 一、腾讯云对象存储(COS)相关 1. **云函数操作示例**:腾讯云函数可通过API操作COS存储桶,例如文件列举功能。引用中展示的Python代码实现了通过云函数获取COS文件列表: ```python # 示例代码片段来自腾讯云函数SDK def main_handler(event, context): cos_client = CosS3Client(...) response = cos_client.list_objects(Bucket='examplebucket') return {"files": [content['Key'] for content in response['Contents']]} ``` 该示例展示了请求ID跟踪机制(如RequestId: b269d9b3...),可能与cos13487中的数字编码相关[^3] 2. **错误代码关联**:COS服务中错误代码通常采用字母+数字组合形式。例如HTTP 403错误对应权限问题,但具体13487编码需查询官方文档 ### 二、机器学习模型相关 1. **Cosmos Tokenizer**:引用显示该工具即将支持TensorRT推理加速,版本号可能包含数字标识。例如模型版本`cosmos-v1.3.487`的简写形式可能与cos13487相关[^1] 2. **模型训练参数**:在分布式训练场景中,任务编号可能采用"cos+时间戳"的格式,如cos-13-48-7可能表示13时48分第7批次任务 ### 三、建议排查步骤 1. 验证是否为腾讯云COS相关ID: - 检查云函数日志中的RequestId格式 - 登录腾讯云控制台查询「工单系统」是否有相关编号 2. 技术文档检索: - 访问Cosmos Tokenizer的GitHub仓库查看ISSUE列表[^1] - 查询NVIDIA NeMo框架的版本更新日志[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EAI工程笔记

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值