big_vision
big_vision 是谷歌官方开源的视觉模型训练代码库,专为研发 Vision Transformer (ViT)、SigLIP、MLP-Mixer 等前沿架构而打造。它主要解决了在大规模数据集上高效训练复杂视觉模型的难题,提供了从单卡到多达 2048 个 TPU 核心的分布式训练方案,确保实验具备高度的可扩展性与可复现性。
该工具基于 Jax 和 Flax 深度学习框架构建,并整合了 tf.data 与 TensorFlow Datasets 以优化数据输入管道。其核心亮点在于能够无缝支撑超大规模并行计算,让研究人员可以轻松复现谷歌多项顶级论文成果,包括经典的"An Image is Worth 16x16 Words"及后续的缩放定律研究。
big_vision 非常适合从事计算机视觉研究的科研人员、算法工程师以及希望探索大模型训练细节的高级开发者使用。需要注意的是,作为一个动态的研究型代码库,它侧重于支持谷歌内部的前沿探索,因此更适合具备一定深度学习基础、能够适应代码快速迭代的专业技术人群,而非寻求开箱即用商业解决方案的普通用户。
使用场景
某大型电商公司的算法团队正致力于训练一个超大规模视觉模型,以精准识别海量商品图片中的细粒度特征(如服装纹理、材质细节),从而提升搜索推荐准确率。
没有 big_vision 时
- 分布式训练门槛极高:团队需手动编写复杂的底层代码才能在多张 GPU 或 TPU 上并行训练,从单卡扩展到千卡集群往往需要数周调试,且极易出现通信瓶颈。
- 复现顶尖模型困难:想要尝试 ViT、SigLIP 或 MLP-Mixer 等前沿架构时,缺乏官方统一的高质量实现,只能依赖社区碎片化代码,导致实验结果难以复现且性能不稳定。
- 数据管道成为瓶颈:面对亿级图像数据,自建的输入流水线无法高效支撑大规模训练,经常因数据加载速度慢导致昂贵的计算资源闲置等待。
- 超参数调优盲目:缺乏经过大规模验证的基准配置(Baseline),团队在调整学习率、增强策略等超参数时如同“盲人摸象”,消耗大量算力却难有突破。
使用 big_vision 后
- 无缝弹性扩展:基于 JAX/Flax 构建的架构支持“开箱即用”的分布式训练,团队可轻松将任务从单核 TPU 平滑扩展至 2048 核集群,大幅缩短模型迭代周期。
- 直接复用权威架构:直接调用内置的 ViT、FlexiViT 等经过谷歌验证的官方代码和配置文件,确保模型结构的最优性,让研发重心回归到业务逻辑创新。
- 高效可扩展的数据流:利用集成的 tf.data 和 TensorFlow Datasets 构建高吞吐输入管道,完美匹配大规模计算需求,彻底消除数据加载导致的算力浪费。
- 站在巨人肩膀上调优:直接参考官方提供的缩放定律(Scaling Laws)配置和最佳实践,快速锁定最优超参数组合,显著提升了最终模型的识别精度。
big_vision 通过提供工业级的大规模视觉训练基础设施,让研发团队能从繁琐的工程泥潭中解脱,专注于探索视觉模型的性能极限。
运行环境要求
- Linux
- 支持 GPU 机器或 Google Cloud TPU VMs
- 若使用 GPU,需兼容 JAX/CUDA 的 NVIDIA 显卡(具体型号未说明),支持从单卡到多卡分布式训练
- 若使用 TPU,支持最多 2048 核心
未说明

快速开始
大型视觉模型
该代码库旨在使用Cloud TPU VMs或 GPU 机器来训练大规模视觉模型。它基于Jax/Flax库,并利用tf.data和TensorFlow Datasets构建可扩展且可复现的数据流水线。
开源此代码库主要有两个目的:
- 发布在此代码库中开发的研究项目代码(见下方列表)。
- 为在 GPU 机器和 Google Cloud TPUs 上运行大规模视觉实验提供一个强有力的起点,能够从单个 TPU 核心无缝扩展到最多包含 2048 个 TPU 核心的分布式设置,开箱即用。
big_vision 的目标是支持 Google 内部的研究项目。我们通常不会处理功能请求或接受外部贡献,除非事先获得批准(请先在 issue 中咨询)。对于一个得到良好支持的纯迁移代码库,也可以参考vision_transformer。
请注意,big_vision 是一个非常动态的代码库,尽管我们致力于始终保持核心代码的完全可用性,但我们无法保证位于 .../proj/... 子文件夹中的项目特定代码能够及时更新。不过,我们提供了一个表格,列出了已知特定项目可以正常工作的最后提交记录。
以下研究项目最初是在 big_vision 代码库中开展的:
架构研究
- 一张图胜过 16x16 个词:大规模图像识别中的 Transformer,作者:Alexey Dosovitskiy*、Lucas Beyer*、Alexander Kolesnikov*、Dirk Weissenborn*、Xiaohua Zhai*、Thomas Unterthiner、Mostafa Dehghani、Matthias Minderer、Georg Heigold、Sylvain Gelly、Jakob Uszkoreit 和 Neil Houlsby*
- 视觉 Transformer 的规模效应,作者:Xiaohua Zhai*、Alexander Kolesnikov*、Neil Houlsby 和 Lucas Beyer*
资源:配置文件。 - 如何训练你的 ViT?视觉 Transformer 中的数据、增强与正则化,作者:Andreas Steiner*、Alexander Kolesnikov*、Xiaohua Zhai*、Ross Wightman、Jakob Uszkoreit 和 Lucas Beyer*
- MLP-Mixer:一种全 MLP 的视觉架构,作者:Ilya Tolstikhin*、Neil Houlsby*、Alexander Kolesnikov*、Lucas Beyer*、Xiaohua Zhai、Thomas Unterthiner、Jessica Yung、Andreas Steiner、Daniel Keysers、Jakob Uszkoreit、Mario Lucic 和 Alexey Dosovitskiy
资源:配置文件。 - ImageNet-1k 数据集上更好的纯 ViT 基线,作者:Lucas Beyer、Xiaohua Zhai、Alexander Kolesnikov
资源:配置文件。 - UViM:一种基于学习引导码的统一视觉建模方法,作者:Alexander Kolesnikov^、André Susano Pinto^、Lucas Beyer*、Xiaohua Zhai*、Jeremiah Harmsen* 和 Neil Houlsby*
资源:README 文件、配置文件、Colab 笔记本。 - FlexiViT:一种适用于所有补丁大小的单一模型,作者:Lucas Beyer*、Pavel Izmailov*、Alexander Kolesnikov*、Mathilde Caron*、Simon Kornblith*、Xiaohua Zhai*、Matthias Minderer*、Michael Tschannen*、Ibrahim Alabdulmohsin* 和 Filip Pavetic*
资源:README 文件、配置文件。 - 双层 PatchNorm,作者:Manoj Kumar、Mostafa Dehghani 和 Neil Houlsby。
- 让 ViT 达到最佳状态:计算最优模型设计的规模法则,作者:Ibrahim Alabdulmohsin*、Xiaohua Zhai*、Alexander Kolesnikov 和 Lucas Beyer*。
- (部分)将视觉 Transformer 扩展至 220 亿参数,作者:Mostafa Dehghani*、Josip Djolonga*、Basil Mustafa*、Piotr Padlewski*、Jonathan Heek*、众多中间作者 和 Neil Houlsby*。
- (部分)有限标量量化:简化版 VQ-VAE,作者:Fabian Mentzer、David Minnen、Eirikur Agustsson 和 Michael Tschannen。
- GIVT:生成式无限词汇表 Transformer,作者:Michael Tschannen、Cian Eastwood 和 Fabian Mentzer。
资源:README 文件、配置文件、Colab 笔记本。 - 基于掩码扩散的统一自编码,作者:Philippe Hansen-Estruch、Sriram Vishwanath、Amy Zhang 和 Manan Tomar。
- Jet:一种现代基于 Transformer 的归一化流,作者:Alexander Kolesnikov*、André Susano Pinto*、Michael Tschannen*、配置文件。
- JetFormer:一种自回归生成模型,用于处理原始图像和文本,作者:Michael Tschannen*、André Susano Pinto* 和 Alexander Kolesnikov*。配置文件。
多模态研究
- LiT:锁定图像的文本调优实现零样本迁移,作者:
Xiaohua Zhai*、Xiao Wang*、Basil Mustafa*、Andreas Steiner*、Daniel Keysers、Alexander Kolesnikov 和 Lucas Beyer*
资源:训练器、配置文件、Colab 笔记本。 - CLIPPO:仅从像素进行图像与语言理解,作者:
Michael Tschannen、Basil Mustafa、Neil Houlsby
资源:README、配置文件、Colab 笔记本。 - 用于语言图像预训练的 Sigmoid 损失,作者:
Xiaohua Zhai*、Basil Mustafa、Alexander Kolesnikov、Lucas Beyer*
资源:Colab 笔记本及模型,代码待补充。 - 计算机视觉多任务学习中自回归解码器的研究,作者: Lucas Beyer*、Bo Wan*、Gagan Madan*、Filip Pavetic*、Andreas Steiner*、Alexander Kolesnikov、André Susano Pinto、Emanuele Bugliarello、Xiao Wang、Qihang Yu、Liang-Chieh Chen、Xiaohua Zhai*。
- 图像字幕生成器同样是可扩展的视觉学习者,作者:
Michael Tschannen*、Manoj Kumar*、Andreas Steiner*、Xiaohua Zhai、Neil Houlsby、Lucas Beyer*。
资源:README、配置文件、模型。 - 三塔:基于预训练图像模型的灵活对比学习,作者:Jannik Kossen、Mark Collier、Basil Mustafa、Xiao Wang、Xiaohua Zhai、Lucas Beyer、Andreas Steiner、Jesse Berent、Rodolphe Jenatton、Efi Kokiopoulou。
- (部分)PaLI:联合缩放的多语言语言-图像模型,作者:Xi Chen、Xiao Wang、Soravit Changpinyo、哇,中间作者真多、Anelia Angelova、Xiaohua Zhai、Neil Houlsby、Radu Soricut。
- (部分)PaLI-3 视觉语言模型:更小、更快、更强,作者:Xi Chen、Xiao Wang、Lucas Beyer、Alexander Kolesnikov、Jialin Wu、Paul Voigtlaender、Basil Mustafa、Sebastian Goodman、Ibrahim Alabdulmohsin、Piotr Padlewski、Daniel Salz、Xi Xiong、Daniel Vlasic、Filip Pavetic、Keran Rong、Tianli Yu、Daniel Keysers、Xiaohua Zhai、Radu Soricut。
- LocCa,作者: Bo Wan、Michael Tschannen、Yongqin Xian、Filip Pavetic、Ibrahim Alabdulmohsin、Xiao Wang、André Susano Pinto、Andreas Steiner、Lucas Beyer、Xiaohua Zhai。
- PaliGemma、
PaliGemma 2,作者:哇,作者真多。
资源:README、 模型、 迁移配置、 数据集、 CountBenchQA。 - SigLIP 2:具有改进语义理解、定位能力和密集特征的多语言视觉-语言编码器,作者:哇,作者真多。
资源:README(含检查点)、Colab 笔记本。
训练
- 知识蒸馏:好老师要有耐心和一致性,作者:
Lucas Beyer*、Xiaohua Zhai*、Amélie Royer*、Larisa Markeeva*、Rohan Anil、以及 Alexander Kolesnikov*
资源:README、训练器、Colab 笔记本。 - 尖锐度感知最小化:高效提升泛化能力的方法,作者: Pierre Foret、Ariel Kleiner、Hossein Mobahi、Behnam Neyshabur。
- 代理差距最小化改进尖锐度感知训练,作者:Juntang Zhuang、Boqing Gong、Liangzhe Yuan、Yin Cui、Hartwig Adam、Nicha Dvornek、Sekhar Tatikonda、James Duncan 和 Ting Liu
资源:训练器、配置文件、复现结果。 - 使用任务奖励微调计算机视觉模型,作者: André Susano Pinto*、Alexander Kolesnikov*、Yuge Shi、Lucas Beyer、Xiaohua Zhai。
- (部分)VeLO:通过扩大规模训练多功能学习优化器,作者: Luke Metz、James Harrison、C. Daniel Freeman、Amil Merchant、Lucas Beyer、James Bradbury、Naman Agrawal、Ben Poole、Igor Mordatch、Adam Roberts、Jascha Sohl-Dickstein。
杂项
- 我们已经用完 ImageNet 了吗?,作者: Lucas Beyer*、Olivier J. Hénaff*、Alexander Kolesnikov*、Xiaohua Zhai*、Aäron van den Oord*。
- 无过滤:对比式视觉-语言模型中的文化与社会经济多样性,作者: Angéline Pouget、Lucas Beyer、Emanuele Bugliarello、Xiao Wang、Andreas Peter Steiner、Xiaohua Zhai、Ibrahim Alabdulmohsin。
代码库的高层次组织与原则概览
主入口是一个训练器模块,它通常负责创建模型和优化器、加载数据、保存检查点以及在循环中进行训练和评估等所有样板代码。我们在根目录下提供了标准的训练器 train.py。通常,big_vision 中的各个项目会基于此训练器进行分支并定制。
所有模型、评估器和预处理操作都位于相应的子目录中,并且经常可以在不同项目之间复用。我们鼓励这些目录内的 API 兼容,以促进复用性,但这并不是强制性的,因为各个项目可能需要引入自己的自定义 API。
我们有一个强大的配置系统,配置文件存放在 configs/ 目录中。自定义的训练器和模块可以直接扩展或修改配置选项。
项目特定的代码位于 .../proj/... 命名空间中。由于各种原因,项目特定的代码并不总是能够与核心 big_vision 库保持同步。下面列出了每个项目在预期可以正常工作的 最新已知提交。
训练任务对中断具有鲁棒性,可以从上次保存的检查点无缝恢复(前提是用户提供了正确的 --workdir 路径)。
每个配置文件的顶部都包含一个注释,其中有一段用于运行该配置的 COMMAND 代码片段,以及对预期运行时间和结果的一些提示。更多详细信息请见下文,但一般来说,在 GPU 机器上运行时只需调用 python -m COMMAND;而在 TPU 上运行时(包括多主机场景),则需要执行以下命令:
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all
--command "bash big_vision/run_tpu.sh COMMAND"
有关如何在 GPU 机器或 Google Cloud TPU 上运行 big_vision 代码的详细说明,请参阅下方内容。
默认情况下,我们会写入检查点和日志文件。日志文件是以 JSON 对象组成的列表,我们提供了一个简短而直接的 示例 Colab,用于读取和显示日志及检查点。
当前与未来的内容
首次发布包含了在 Cloud TPU VM 上大规模预训练、迁移和评估分类模型的核心部分。
此后,我们又添加了以下关键功能和项目:
- 类似 LiT 和 CLIP 的对比图像-文本模型训练与评估。
- 稳健且一致的蒸馏技术。
- ViT 的规模扩展。
- MLP-Mixer。
- UViM。
我们计划在近期发布的功能和项目(不分先后顺序)包括:
- TFDS 中的 ImageNet-21k 数据集。
- 加载我们在论文中使用的其他公开模型(NFNet、MoCov3、DINO)。
- 内存高效的 Polyak 平滑实现。
- 高级 JAX 计算与内存分析工具。目前我们使用的是内部工具,但未来可能会增加对公开可用工具的支持。
我们将继续在此处发布在 big_vision 框架内开发的未来研究成果代码。
非内容部分
以下内容存在于该代码库的内部版本中,目前暂无对外发布的计划:
- 针对质量和速度的常规回归测试,它们高度依赖于内部基础设施。
- 实验的高级日志记录、监控和可视化工具,这也严重依赖于内部基础设施。不过,我们对此持开放态度,未来可能会加入一些功能,尤其是如果能以独立的方式实现的话。
- 尚未发表的正在进行中的研究项目。
GPU 设置
我们首先讨论如何在本地 GPU 机器上设置和运行 big_vision,然后再介绍 Cloud TPU 的设置方法。需要注意的是,本地 GPU 设置中的数据准备步骤在很大程度上也可以用于 Cloud TPU 设置。虽然为了简洁起见,相关说明中省略了这一步骤,但我们强烈建议在安装 Python 依赖时使用 虚拟环境。
安装 Python 包
第一步是克隆 big_vision 仓库并安装相关的 Python 依赖:
git clone https://github.com/google-research/big_vision
cd big_vision/
pip3 install --upgrade pip
pip3 install -r big_vision/requirements.txt
最新版本的 jax 库可以通过以下命令获取:
pip3 install --upgrade "jax[cuda]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
根据您机器上安装的 CUDA 和 cuDNN 库版本,您可能需要选择不同的 jax 包。更多信息请参考 官方 JAX 文档。
准备 tfds 数据
为了统一且可复现地访问标准数据集,我们选择了 tensorflow_datasets (tfds) 库。使用该库时,需要先下载并预处理每个数据集,然后将其存储在硬盘上(或者,如果您使用 Google Cloud,则最好存储在 GCP 存储桶中)。
许多数据集在首次使用时可以自动下载和预处理。尽管如此,我们特意禁用了这一功能,建议在首次运行之前单独完成数据准备步骤。这样可以在出现问题时更方便地进行调试,而且某些数据集,如 imagenet2012,需要手动下载数据。
大多数数据集,例如 cifar100、oxford_iiit_pet 或 imagenet_v2,都可以通过运行以下命令完全自动地下载和准备:
cd big_vision/
python3 -m big_vision.tools.download_tfds_datasets cifar100 oxford_iiit_pet imagenet_v2
完整的数据集列表可在 此链接 查看。
然而,有些数据集,如 imagenet2012 或 imagenet2012_real,需要手动下载数据并放置到 $TFDS_DATA_DIR/downloads/manual/ 目录中,该目录的默认路径为 ~/tensorflow_datasets/downloads/manual/。例如,对于 imagenet2012 和 imagenet2012_real,需要将官方的 ILSVRC2012_img_train.tar 和 ILSVRC2012_img_val.tar 文件放入该目录,然后运行:
python3 -m big_vision.tools.download_tfds_datasets imagenet2012 imagenet2012_real
(这可能需要大约 1 小时。)
如果您使用 Google Cloud,特别是 TPU,可以将预处理后的数据(存储在 $TFDS_DATA_DIR 中)上传到 Google Cloud 存储桶,并在任何 TPU 虚拟机上使用该存储桶来访问数据。
在 GPU 机器上运行
最后,在安装完所有 Python 依赖并准备好 tfds 数据后,用户可以使用自己选择的配置来运行任务。例如,要在 ImageNet 数据上训练 ViT-S/16 模型,应运行以下命令:
python3 -m big_vision.train --config big_vision/configs/vit_s16_i1k.py --workdir workdirs/`date '+%m-%d_%H%M'`
或者要训练 MLP-Mixer-B/16,可以运行(注意 gpu8 配置参数会减少默认的批大小和 epoch 数):
python3 -m big_vision.train --config big_vision/configs/mlp_mixer_i1k.py:gpu8 --workdir workdirs/`date '+%m-%d_%H%M'`
Cloud TPU VM 设置
创建 TPU VM
要创建一台拥有 8 个 TPU 核心的单机,请按照以下 Cloud TPU JAX 文档操作: https://cloud.google.com/tpu/docs/run-calculation-jax
为了支持大规模视觉研究,建议使用多台主机以获得更多核心。下面我们将提供如何实现这一目标的说明。
首先,创建一些可重复使用的变量:
export NAME=<TPU 部署名称,例如 my-tpu-machine>
export ZONE=<GCP 地理区域,例如 europe-west4-a>
export GS_BUCKET_NAME=<存储桶名称,例如 my_bucket>
以下命令行将创建一个拥有 32 个核心、4 台主机的 TPU VM:
gcloud compute tpus tpu-vm create $NAME --zone $ZONE --accelerator-type v3-32 --version tpu-ubuntu2204-base
在 TPU VM 上安装 big_vision
获取 big_vision 仓库,将其复制到所有 TPU VM 主机,并安装依赖项。
git clone https://github.com/google-research/big_vision
gcloud compute tpus tpu-vm scp --recurse big_vision/big_vision $NAME: --zone=$ZONE --worker=all
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command "bash big_vision/run_tpu.sh"
下载并准备 TFDS 数据集
我们建议先按照上述方法在本地准备 tfds 数据,然后再将其上传到 Google Cloud 存储桶。不过,如果您愿意,也可以使用 TPU 机器自动准备那些无需手动下载的数据集,具体步骤如下。请注意,TPU 机器仅有 100 GB 的磁盘空间,且多主机 TPU 分片不允许以写入模式挂载外部磁盘,因此以下说明可能不适用于大型数据集的准备。作为另一种替代方案,我们还提供了 如何在仅 CPU 的 GCP 机器上准备 tfds 数据 的说明。
具体来说,评估过程中使用的七个 TFDS 数据集将在 TPU 机器上的 ~/tensorflow_datasets 目录下通过以下命令生成:
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command "TFDS_DATA_DIR=~/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.tools.download_tfds_datasets cifar10 cifar100 oxford_iiit_pet oxford_flowers102 cars196 dtd uc_merced"
随后,您可以将这些数据集复制到 GS 存储桶,以便所有 TPU 工作节点都能访问。
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command "rm -r ~/tensorflow_datasets/downloads && gsutil cp -r ~/tensorflow_datasets gs://$GS_BUCKET_NAME"
如果您希望集成其他公共或自定义数据集,例如 imagenet2012,请遵循 官方指南。
预训练模型
有关预训练模型的完整列表,请查看与模型代码位于同一模块中的 load 函数。关于如何使用这些模型的示例配置,请参阅 configs/transfer.py。
在 TPU VM 上运行迁移学习脚本
以下命令行将在 cifar10 数据集上微调一个预训练的 vit-i21k-augreg-b/32 模型:
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command "TFDS_DATA_DIR=gs://$GS_BUCKET_NAME/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.train --config big_vision/configs/transfer.py:model=vit-i21k-augreg-b/32,dataset=cifar10,crop=resmall_crop --workdir gs://$GS_BUCKET_NAME/big_vision/workdir/`date '+%m-%d_%H%M'` --config.lr=0.03"
在 TPU VM 上运行训练脚本
要在一个大型数据集上训练您自己的 big_vision 模型,例如 imagenet2012(请先 准备 TFDS 数据集),可以运行以下命令行:
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command "TFDS_DATA_DIR=gs://$GS_BUCKET_NAME/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.train --config big_vision/configs/bit_i1k.py --workdir gs://$GS_BUCKET_NAME/big_vision/workdir/`date '+%m-%d_%H%M'`"
FSDP 训练
big_vision 支持灵活的参数和模型分片策略。目前,我们通过简单的配置更改即可支持流行的 FSDP 分片,详情请参见 此配置示例。例如,要对预训练的 ViT-L 模型进行 FSDP 微调,可以运行以下命令(可根据您的硬件调整批大小):
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command "TFDS_DATA_DIR=gs://$GS_BUCKET_NAME/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.train --config big_vision/configs/transfer.py:model=vit-i21k-augreg-l/16,dataset=oxford_iiit_pet,crop=resmall_crop,fsdp=True,batch_size=256 --workdir gs://$GS_BUCKET_NAME/big_vision/workdir/`date '+%m-%d_%H%M'` --config.lr=0.03"
使用 SigLIP 进行图像-文本联合训练
一个使用公开 coco 字幕数据的最小示例:
gcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command "TFDS_DATA_DIR=gs://$GS_BUCKET_NAME/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.trainers.proj.image_text.siglip --config big_vision/configs/proj/image_text/siglip_lit_coco.py --workdir gs://$GS_BUCKET_NAME/big_vision/`date '+%Y-%m-%d_%H%M'`"
有时有用的 gcloud 命令
- 销毁 TPU 机器:
gcloud compute tpus tpu-vm delete $NAME --zone $ZONE - 删除所有主机上的
big_vision相关文件夹:gcloud compute tpus tpu-vm ssh $NAME --zone $ZONE --worker=all --command 'rm -rf ~/big_vision ~/bv_venv'
在独立的 GCP CPU 机器上准备 tfds 数据。
首先创建一台新机器和一块磁盘(您可以根据需要调整具体的机器类型和磁盘设置/容量):
export NAME_CPU_HOST=<仅CPU机器的名称>
export NAME_DISK=<磁盘的名称>
gcloud compute instances create $NAME_CPU_HOST --machine-type c3-standard-22 --zone $ZONE --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud
gcloud compute disks create $NAME_DISK --size 1000GB --zone $ZONE --type pd-balanced
现在将磁盘挂载到新创建的机器上:
gcloud compute instances attach-disk $NAME_CPU_HOST --disk $NAME_DISK --zone $ZONE
接下来,通过 ssh 登录到该机器:gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE,并
按照说明格式化和挂载磁盘。
假设它被挂载到了 /mnt/disks/tfds。
差不多完成了,现在克隆并设置 big_vision:
gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command "git clone https://github.com/google-research/big_vision.git && cd big_vision && sh big_vision/run_tpu.sh"
最后,使用工具脚本准备数据集(例如 coco_captions),并将结果复制到您的 Google Cloud 存储桶中:
gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command "cd big_vision && TFDS_DATA_DIR=/mnt/disks/tfds/tensorflow_datasets bash big_vision/run_tpu.sh big_vision.tools.download_tfds_datasets coco_captions"
gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command "rm -rf /mnt/disks/tfds/tensorflow_datasets/downloads && gsutil cp -r /mnt/disks/tfds/tensorflow_datasets gs://$GS_BUCKET_NAME"
ViT 基线
我们在名为 vit_s16_i1k.py 的配置文件中提供了一个经过良好调优的 ViT-S/16 基线。在 90 个训练周期内,它在 ImageNet 验证集上达到了 76.5% 的准确率,是研究 ViT 模型的一个强大而简单的起点。
请参阅我们的 arXiv 报告 以获取更多详细信息;如果这个基线对您的研究有所帮助,请考虑引用以下内容:
@article{vit_baseline,
url = {https://arxiv.org/abs/2205.01580},
author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},
title = {Better plain ViT baselines for ImageNet-1k},
journal={arXiv preprint arXiv:2205.01580},
year = {2022},
}
项目特定提交记录
以下是已知的最后一个提交记录,预计该项目代码在此版本下能够正常运行。核心代码和配置则应在最新版本下正常工作。
引用代码库
如果您发现此代码库对您的研究有所帮助,请考虑使用以下 BibTEX 格式来引用它:
@misc{big_vision,
author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},
title = {Big Vision},
year = {2022},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/google-research/big_vision}}
}
免责声明
本项目并非 Google 官方产品。
许可证
除非另有明确说明,否则 big_vision 代码库中的所有内容(包括模型和 Colab 笔记本)均采用 Apache 2.0 许可证发布。 完整的许可证文本请参阅 LICENSE 文件。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备