[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-google-research--big_vision":3,"similar-google-research--big_vision":100},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":18,"owner_email":18,"owner_twitter":18,"owner_website":19,"owner_url":20,"languages":21,"stars":48,"forks":49,"last_commit_at":50,"license":51,"difficulty_score":52,"env_os":53,"env_gpu":54,"env_ram":55,"env_deps":56,"category_tags":63,"github_topics":18,"view_count":66,"oss_zip_url":18,"oss_zip_packed_at":18,"status":67,"created_at":68,"updated_at":69,"faqs":70,"releases":99},5985,"google-research\u002Fbig_vision","big_vision","Official codebase used to develop Vision Transformer, SigLIP, MLP-Mixer, LiT and more.","big_vision 是谷歌官方开源的视觉模型训练代码库，专为研发 Vision Transformer (ViT)、SigLIP、MLP-Mixer 等前沿架构而打造。它主要解决了在大规模数据集上高效训练复杂视觉模型的难题，提供了从单卡到多达 2048 个 TPU 核心的分布式训练方案，确保实验具备高度的可扩展性与可复现性。\n\n该工具基于 Jax 和 Flax 深度学习框架构建，并整合了 tf.data 与 TensorFlow Datasets 以优化数据输入管道。其核心亮点在于能够无缝支撑超大规模并行计算，让研究人员可以轻松复现谷歌多项顶级论文成果，包括经典的\"An Image is Worth 16x16 Words\"及后续的缩放定律研究。\n\nbig_vision 非常适合从事计算机视觉研究的科研人员、算法工程师以及希望探索大模型训练细节的高级开发者使用。需要注意的是，作为一个动态的研究型代码库，它侧重于支持谷歌内部的前沿探索，因此更适合具备一定深度学习基础、能够适应代码快速迭代的专业技术人群，而非寻求开箱即用商业解决方案的普通用户。","# Big Vision\n\nThis codebase is designed for training large-scale vision models using\n[Cloud TPU VMs](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fcompute\u002Fintroducing-cloud-tpu-vms)\nor GPU machines. It is based on [Jax](https:\u002F\u002Fgithub.com\u002Fjax-ml\u002Fjax)\u002F[Flax](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fflax)\nlibraries, and uses [tf.data](https:\u002F\u002Fwww.tensorflow.org\u002Fguide\u002Fdata) and\n[TensorFlow Datasets](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets) for scalable and\nreproducible input pipelines.\n\nThe open-sourcing of this codebase has two main purposes:\n1. Publishing the code of research projects developed in this codebase (see a\n   list below).\n2. Providing a strong starting point for running large-scale vision experiments\n   on GPU machines and Google Cloud TPUs, which should scale seamlessly and\n   out-of-the box from a single TPU core to a distributed setup with up to 2048\n   TPU cores.\n\n`big_vision` aims to support research projects at Google. We are unlikely to\nwork on feature requests or accept external contributions, unless they were\npre-approved (ask in an issue first). For a well-supported transfer-only\ncodebase, see also [vision_transformer](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fvision_transformer).\n\nNote that `big_vision` is quite dynamic codebase and, while we intend to keep\nthe core code fully-functional at all times, we can not guarantee timely updates\nof the project-specific code that lives in the `...\u002Fproj\u002F...` subfolders.\nHowever, we provide a [table](#project-specific-commits) with last known\ncommits where specific projects were known to work.\n\nThe following research projects were originally conducted in the `big_vision`\ncodebase:\n\n### Architecture research\n\n- [An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale](https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.11929), by\n  Alexey Dosovitskiy*, Lucas Beyer*, Alexander Kolesnikov*, Dirk Weissenborn*,\n  Xiaohua Zhai*, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer,\n  Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, and Neil Houlsby*\n- [Scaling Vision Transformers](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.04560), by\n  Xiaohua Zhai*, Alexander Kolesnikov*, Neil Houlsby, and Lucas Beyer*\\\n  Resources: [config](big_vision\u002Fconfigs\u002Fproj\u002Fscaling_laws\u002Ftrain_vit_g.py).\n- [How to train your ViT? Data, Augmentation, and Regularization in Vision Transformers](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.10270), by\n  Andreas Steiner*, Alexander Kolesnikov*, Xiaohua Zhai*, Ross Wightman,\n  Jakob Uszkoreit, and Lucas Beyer*\n- [MLP-Mixer: An all-MLP Architecture for Vision](https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.01601), by\n  Ilya Tolstikhin*, Neil Houlsby*, Alexander Kolesnikov*, Lucas Beyer*,\n  Xiaohua Zhai, Thomas Unterthiner, Jessica Yung, Andreas Steiner,\n  Daniel Keysers, Jakob Uszkoreit, Mario Lucic, Alexey Dosovitskiy\\\n  Resources: [config](big_vision\u002Fconfigs\u002Fmlp_mixer_i1k.py).\n- [Better plain ViT baselines for ImageNet-1k](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580), by\n  Lucas Beyer, Xiaohua Zhai, Alexander Kolesnikov\\\n  Resources: [config](big_vision\u002Fconfigs\u002Fvit_s16_i1k.py)\n- [UViM: A Unified Modeling Approach for Vision with Learned Guiding Codes](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.10337), by\n  Alexander Kolesnikov^*, André Susano Pinto^*, Lucas Beyer*, Xiaohua Zhai*, Jeremiah Harmsen*, Neil Houlsby*\\\n  Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fuvim\u002FREADME.md), [configs](big_vision\u002Fconfigs\u002Fproj\u002Fuvim), [colabs](big_vision\u002Fconfigs\u002Fproj\u002Fuvim).\n- [FlexiViT: One Model for All Patch Sizes](https:\u002F\u002Farxiv.org\u002Fabs\u002F2212.08013), by\n  Lucas Beyer*, Pavel Izmailov*, Alexander Kolesnikov*, Mathilde Caron*, Simon\n  Kornblith*, Xiaohua Zhai*, Matthias Minderer*, Michael Tschannen*, Ibrahim\n  Alabdulmohsin*, Filip Pavetic*\\\n  Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fflexivit\u002FREADME.md), [configs](big_vision\u002Fconfigs\u002Fproj\u002Fflexivit).\n- [Dual PatchNorm](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.01327), by Manoj Kumar, Mostafa Dehghani, Neil Houlsby.\n- [Getting ViT in Shape: Scaling Laws for Compute-Optimal Model Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F2305.13035), by\n  Ibrahim Alabdulmohsin*, Xiaohua Zhai*, Alexander Kolesnikov, Lucas Beyer*.\n- (partial) [Scaling Vision Transformers to 22 Billion Parameters](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.05442), by\n  Mostafa Dehghani*, Josip Djolonga*, Basil Mustafa*, Piotr Padlewski*, Jonathan Heek*, *wow many middle authors*, Neil Houlsby*.\n- (partial) [Finite Scalar Quantization: VQ-VAE Made Simple](https:\u002F\u002Farxiv.org\u002Fabs\u002F2309.15505), by\n  Fabian Mentzer, David Minnen, Eirikur Agustsson, Michael Tschannen.\n- [GIVT: Generative Infinite-Vocabulary Transformers](https:\u002F\u002Farxiv.org\u002Fabs\u002F2312.02116), by\n  Michael Tschannen, Cian Eastwood, Fabian Mentzer.\\\n  Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002FREADME.md), [config](big_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002Fgivt_imagenet2012.py), [colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002Fgivt_demo_colab.ipynb).\n- [Unified Auto-Encoding with Masked Diffusion](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.17688), by\n  Philippe Hansen-Estruch, Sriram Vishwanath, Amy Zhang, Manan Tomar.\n- [Jet: A Modern Transformer-Based Normalizing Flow](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15129), by\n  Alexander Kolesnikov*, André Susano Pinto*, Michael Tschannen*, [configs](big_vision\u002Fconfigs\u002Fproj\u002Fjet)\n- [JetFormer: An autoregressive generative model of raw images and text](https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.19722), by\n  Michael Tschannen*, André Susano Pinto*, Alexander Kolesnikov*. [configs](big_vision\u002Fconfigs\u002Fproj\u002Fjetformer).\n\n\n### Multimodal research\n\n- [LiT: Zero-Shot Transfer with Locked-image Text Tuning](https:\u002F\u002Farxiv.org\u002Fabs\u002F2111.07991), by\n  Xiaohua Zhai*, Xiao Wang*, Basil Mustafa*, Andreas Steiner*, Daniel Keysers,\n  Alexander Kolesnikov, and Lucas Beyer*\\\n  Resources: [trainer](big_vision\u002Ftrainers\u002Fproj\u002Fimage_text\u002Fcontrastive.py), [config](big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Flit_coco.py), [colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Flit.ipynb).\n- [CLIPPO: Image-and-Language Understanding from Pixels Only](https:\u002F\u002Farxiv.org\u002Fabs\u002F2212.08045), by\n  Michael Tschannen, Basil Mustafa, Neil Houlsby\\\n  Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002FREADME.md), [config](big_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002Ftrain_clippo.py), [colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002Fclippo_colab.ipynb).\n- [Sigmoid Loss for Language Image Pre-Training](https:\u002F\u002Farxiv.org\u002Fabs\u002F2303.15343), by\n  Xiaohua Zhai*, Basil Mustafa, Alexander Kolesnikov, Lucas Beyer*\\\n  Resources: [colab and models](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FSigLIP_demo.ipynb), code TODO.\n- [A Study of Autoregressive Decoders for Multi-Tasking in Computer Vision](https:\u002F\u002Farxiv.org\u002Fabs\u002F2303.17376), by\n  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*.\n- [Image Captioners Are Scalable Vision Learners Too](https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.07915), by\n  Michael Tschannen*, Manoj Kumar*, Andreas Steiner*, Xiaohua Zhai, Neil Houlsby, Lucas Beyer*.\\\n  Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fcappa\u002FREADME.md), [config](big_vision\u002Fconfigs\u002Fproj\u002Fcappa\u002Fpretrain.py), [model](big_vision\u002Fmodels\u002Fproj\u002Fcappa\u002Fcappa.py).\n- [Three Towers: Flexible Contrastive Learning with Pretrained Image Models](https:\u002F\u002Farxiv.org\u002Fabs\u002F2305.16999), by Jannik Kossen, Mark Collier, Basil Mustafa, Xiao Wang, Xiaohua Zhai, Lucas Beyer, Andreas Steiner, Jesse Berent, Rodolphe Jenatton, Efi Kokiopoulou.\n- (partial) [PaLI: A Jointly-Scaled Multilingual Language-Image Model](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.06794), by Xi Chen, Xiao Wang, Soravit Changpinyo, *wow so many middle authors*, Anelia Angelova, Xiaohua Zhai, Neil Houlsby, Radu Soricut.\n- (partial) [PaLI-3 Vision Language Models: Smaller, Faster, Stronger](https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.09199), by 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.\n- [LocCa](https:\u002F\u002Farxiv.org\u002Fabs\u002F2403.19596), by\n  Bo Wan, Michael Tschannen, Yongqin Xian, Filip Pavetic, Ibrahim Alabdulmohsin, Xiao Wang, André Susano Pinto, Andreas Steiner, Lucas Beyer, Xiaohua Zhai.\n- [PaliGemma](https:\u002F\u002Farxiv.org\u002Fabs\u002F2407.07726),\n  [PaliGemma 2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.03555), by *wow many authors*.\\\n- Resources: [readme](big_vision\u002Fconfigs\u002Fproj\u002Fpaligemma\u002FREADME.md),\n    [model](big_vision\u002Fmodels\u002Fproj\u002Fpaligemma\u002Fpaligemma.py),\n    [transfer configs](big_vision\u002Fconfigs\u002Fproj\u002Fpaligemma\u002Ftransfers),\n    [datasets](big_vision\u002Fdatasets),\n    [CountBenchQA](big_vision\u002Fdatasets\u002Fcountbenchqa\u002Fdata\u002Fcountbench_paired_questions.json).\n- [SigLIP 2: Multilingual Vision-Language Encoders with Improved Semantic Understanding, Localization, and Dense Features](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.14786), by *wow many authors*.\\\n  Resources: [readme (with checkpoints)](big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FREADME_siglip2.md), [colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FSigLIP2_demo.ipynb).\n\n### Training\n\n- [Knowledge distillation: A good teacher is patient and consistent](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.05237), by\n  Lucas Beyer*, Xiaohua Zhai*, Amélie Royer*, Larisa Markeeva*, Rohan Anil,\n  and Alexander Kolesnikov*\\\n  Resources: [README](big_vision\u002Fconfigs\u002Fproj\u002Fdistill\u002FREADME.md), [trainer](big_vision\u002Ftrainers\u002Fproj\u002Fdistill\u002Fdistill.py), [colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1nMykzUzsfQ_uAxfj3k35DYsATnG_knPl?usp=sharing).\n- [Sharpness-Aware Minimization for Efficiently Improving Generalization](https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.01412), by\n  Pierre Foret, Ariel Kleiner, Hossein Mobahi, Behnam Neyshabur\n- [Surrogate Gap Minimization Improves Sharpness-Aware Training](https:\u002F\u002Farxiv.org\u002Fabs\u002F2203.08065), by Juntang Zhuang, Boqing Gong, Liangzhe Yuan, Yin Cui, Hartwig Adam, Nicha Dvornek, Sekhar Tatikonda, James Duncan and Ting Liu \\\n  Resources: [trainer](big_vision\u002Ftrainers\u002Fproj\u002Fgsam\u002Fgsam.py), [config](big_vision\u002Fconfigs\u002Fproj\u002Fgsam\u002Fvit_i1k_gsam_no_aug.py) [reproduced results](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fpull\u002F8#pullrequestreview-1078557411)\n- [Tuning computer vision models with task rewards](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.08242), by\n  André Susano Pinto*, Alexander Kolesnikov*, Yuge Shi, Lucas Beyer, Xiaohua Zhai.\n- (partial) [VeLO: Training Versatile Learned Optimizers by Scaling Up](https:\u002F\u002Farxiv.org\u002Fabs\u002F2211.09760) by\n  Luke Metz, James Harrison, C. Daniel Freeman, Amil Merchant, Lucas Beyer, James Bradbury, Naman Agrawal, Ben Poole, Igor Mordatch, Adam Roberts, Jascha Sohl-Dickstein.\n\n### Misc\n\n- [Are we done with ImageNet?](https:\u002F\u002Farxiv.org\u002Fabs\u002F2006.07159), by\n  Lucas Beyer*, Olivier J. Hénaff*, Alexander Kolesnikov*, Xiaohua Zhai*, Aäron van den Oord*.\n- [No Filter: Cultural and Socioeconomic Diversity in Contrastive Vision-Language Models](https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.13777), by\n  Angéline Pouget, Lucas Beyer, Emanuele Bugliarello, Xiao Wang, Andreas Peter Steiner, Xiaohua Zhai, Ibrahim Alabdulmohsin.\n\n# Codebase high-level organization and principles in a nutshell\n\nThe main entry point is a trainer module, which typically does all the\nboilerplate related to creating a model and an optimizer, loading the data,\ncheckpointing and training\u002Fevaluating the model inside a loop. We provide the\ncanonical trainer `train.py` in the root folder. Normally, individual projects\nwithin `big_vision` fork and customize this trainer.\n\nAll models, evaluators and preprocessing operations live in the corresponding\nsubdirectories and can often be reused between different projects. We encourage\ncompatible APIs within these directories to facilitate reusability, but it is\nnot strictly enforced, as individual projects may need to introduce their custom\nAPIs.\n\nWe have a powerful configuration system, with the configs living in the\n`configs\u002F` directory. Custom trainers and modules can directly extend\u002Fmodify\nthe configuration options.\n\nProject-specific code resides in the `...\u002Fproj\u002F...` namespace. It is not always\npossible to keep project-specific in sync with the core `big_vision` libraries,\nBelow we provide the [last known commit](#project-specific-commits)\nfor each project where the project code is expected to work.\n\nTraining jobs are robust to interruptions and will resume seamlessly from the\nlast saved checkpoint (assuming a user provides the correct `--workdir` path).\n\nEach configuration file contains a comment at the top with a `COMMAND` snippet\nto run it, and some hint of expected runtime and results. See below for more\ndetails, but generally speaking, running on a GPU machine involves calling\n`python -m COMMAND` while running on TPUs, including multi-host, involves\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all\n  --command \"bash big_vision\u002Frun_tpu.sh COMMAND\"\n```\n\nSee instructions below for more details on how to run `big_vision` code on a\nGPU machine or Google Cloud TPU.\n\nBy default we write checkpoints and logfiles. The logfiles are a list of JSON\nobjects, and we provide a short and straightforward [example colab to read\nand display the logs and checkpoints](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1R_lvV542WUp8Q2y8sbyooZOGCplkn7KI?usp=sharing).\n\n# Current and future contents\n\nThe first release contains the core part of pre-training, transferring, and\nevaluating classification models at scale on Cloud TPU VMs.\n\nWe have since added the following key features and projects:\n- Contrastive Image-Text model training and evaluation as in LiT and CLIP.\n- Patient and consistent distillation.\n- Scaling ViT.\n- MLP-Mixer.\n- UViM.\n\nFeatures and projects we plan to release in the near future, in no particular\norder:\n- ImageNet-21k in TFDS.\n- Loading misc public models used in our publications (NFNet, MoCov3, DINO).\n- Memory-efficient Polyak-averaging implementation.\n- Advanced JAX compute and memory profiling. We are using internal tools for\n    this, but may eventually add support for the publicly available ones.\n\nWe will continue releasing code of our future publications developed within\n`big_vision` here.\n\n### Non-content\n\nThe following exist in the internal variant of this codebase, and there is no\nplan for their release:\n- Regular regression tests for both quality and speed. They rely heavily on\n    internal infrastructure.\n- Advanced logging, monitoring, and plotting of experiments. This also relies\n    heavily on internal infrastructure. However, we are open to ideas on this\n    and may add some in the future, especially if implemented in a\n    self-contained manner.\n- Not yet published, ongoing research projects.\n\n\n# GPU Setup\n\nWe first discuss how to setup and run `big_vision` on a (local) GPU machine,\nand then discuss the setup for Cloud TPUs. Note that data preparation step for\n(local) GPU setup can be largely reused for the Cloud TPU setup. While the\ninstructions skip this for brevity, we highly recommend using a\n[virtual environment](https:\u002F\u002Fdocs.python.org\u002F3\u002Flibrary\u002Fvenv.html) when\ninstalling python dependencies.\n\n## Setting up python packages\n\nThe first step is to checkout `big_vision` and install relevant python\ndependencies:\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\ncd big_vision\u002F\npip3 install --upgrade pip\npip3 install -r big_vision\u002Frequirements.txt\n```\n\nThe latest version of `jax` library can be fetched as\n\n```\npip3 install --upgrade \"jax[cuda]\" -f https:\u002F\u002Fstorage.googleapis.com\u002Fjax-releases\u002Fjax_cuda_releases.html\n```\n\nYou may need a different `jax` package, depending on CUDA and cuDNN libraries\ninstalled on your machine. Please consult\n[official jax documentation](https:\u002F\u002Fgithub.com\u002Fjax-ml\u002Fjax#pip-installation-gpu-cuda)\nfor more information.\n\n## Preparing tfds data\n\nFor unified and reproducible access to standard datasets we opted to use the\n`tensorflow_datasets` (`tfds`) library. It requires each dataset to be\ndownloaded, preprocessed and then to be stored on a hard drive (or, if you use\n\"Google Cloud\", preferably stored in a \"GCP bucket\".).\n\nMany datasets can be downloaded and preprocessed automatically when used\nfor the first time. Nevertheless, we intentionally disable this feature and\nrecommend doing dataset preparation step separately, ahead of the first run. It\nwill make debugging easier if problems arise and some datasets, like\n`imagenet2012`, require manually downloaded data.\n\nMost of the datasets, e.g. `cifar100`, `oxford_iiit_pet` or `imagenet_v2`\ncan be fully automatically downloaded and prepared by running\n\n```\ncd big_vision\u002F\npython3 -m big_vision.tools.download_tfds_datasets cifar100 oxford_iiit_pet imagenet_v2\n```\n\nA full list of datasets is available at [this link](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Foverview#all_datasets).\n\nSome datasets, like `imagenet2012` or `imagenet2012_real`, require the data to\nbe downloaded manually and placed into `$TFDS_DATA_DIR\u002Fdownloads\u002Fmanual\u002F`,\nwhich defaults to `~\u002Ftensorflow_datasets\u002Fdownloads\u002Fmanual\u002F`. For example, for\n`imagenet2012` and `imagenet2012_real` one needs to place the official\n`ILSVRC2012_img_train.tar` and `ILSVRC2012_img_val.tar` files in that directory\nand then run\n`python3 -m big_vision.tools.download_tfds_datasets imagenet2012 imagenet2012_real`\n(which may take ~1 hour).\n\nIf you use `Google Cloud` and, TPUs in particular, you can then upload\nthe preprocessed data (stored in `$TFDS_DATA_DIR`) to\n\"Google Cloud Bucket\" and use the bucket on any of your (TPU) virtual\nmachines to access the data.\n\n## Running on a GPU machine\n\nFinally, after installing all python dependencies and preparing `tfds` data,\nthe user can run the job using config of their choice, e.g. to train `ViT-S\u002F16`\nmodel on ImageNet data, one should run the following command:\n\n```\npython3 -m big_vision.train --config big_vision\u002Fconfigs\u002Fvit_s16_i1k.py --workdir workdirs\u002F`date '+%m-%d_%H%M'`\n```\n\nor to train MLP-Mixer-B\u002F16, run (note the `gpu8` config param that reduces the default batch size and epoch count):\n\n```\npython3 -m big_vision.train --config big_vision\u002Fconfigs\u002Fmlp_mixer_i1k.py:gpu8 --workdir workdirs\u002F`date '+%m-%d_%H%M'`\n```\n\n# Cloud TPU VM setup\n\n## Create TPU VMs\n\nTo create a single machine with 8 TPU cores, follow the following Cloud TPU JAX\ndocument:\nhttps:\u002F\u002Fcloud.google.com\u002Ftpu\u002Fdocs\u002Frun-calculation-jax\n\nTo support large-scale vision research, more cores with multiple hosts are\nrecommended. Below we provide instructions on how to do it.\n\nFirst, create some useful variables, which we be reused:\n\n```\nexport NAME=\u003Ca name of the TPU deployment, e.g. my-tpu-machine>\nexport ZONE=\u003CGCP geographical zone, e.g. europe-west4-a>\nexport GS_BUCKET_NAME=\u003CName of the storage bucket, e.g. my_bucket>\n```\n\nThe following command line will create TPU VMs with 32 cores,\n4 hosts.\n\n```\ngcloud compute tpus tpu-vm create $NAME --zone $ZONE --accelerator-type v3-32 --version tpu-ubuntu2204-base\n```\n\n## Install `big_vision` on TPU VMs\n\nFetch the `big_vision` repository, copy it to all TPU VM hosts, and install\ndependencies.\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\ngcloud compute tpus tpu-vm scp --recurse big_vision\u002Fbig_vision $NAME: --zone=$ZONE --worker=all\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"bash big_vision\u002Frun_tpu.sh\"\n```\n\n## Download and prepare TFDS datasets\n\nWe recommend preparing `tfds` data locally as described above and then uploading\nthe data to `Google Cloud` bucket. However, if you prefer, the datasets which\ndo not require manual downloads can be prepared automatically using a TPU\nmachine as described below. Note that TPU machines have only 100 GB of disk\nspace, and multihost TPU slices do not allow for external disks to be attached\nin a write mode, so the instructions below may not work for preparing large\ndatasets. As yet another alternative, we provide instructions\n[on how to prepare `tfds` data on CPU-only GCP machine](#preparing-tfds-data-on-a-standalone-gcp-cpu-machine).\n\nSpecifically, the seven TFDS datasets used during evaluations will be generated\nunder `~\u002Ftensorflow_datasets` on TPU machine with this command:\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command \"TFDS_DATA_DIR=~\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.tools.download_tfds_datasets cifar10 cifar100 oxford_iiit_pet oxford_flowers102 cars196 dtd uc_merced\"\n```\n\nYou can then copy the datasets to GS bucket, to make them accessible to all TPU workers.\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command \"rm -r ~\u002Ftensorflow_datasets\u002Fdownloads && gsutil cp -r ~\u002Ftensorflow_datasets gs:\u002F\u002F$GS_BUCKET_NAME\"\n```\n\nIf you want to integrate other public or custom datasets, i.e. imagenet2012,\nplease follow [the official guideline](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Foverview).\n\n## Pre-trained models\n\nFor the full list of pre-trained models check out the `load` function defined in\nthe same module as the model code. And for example config on how to use these\nmodels, see `configs\u002Ftransfer.py`.\n\n## Run the transfer script on TPU VMs\n\nThe following command line fine-tunes a pre-trained `vit-i21k-augreg-b\u002F32` model\non `cifar10` dataset.\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Ftransfer.py:model=vit-i21k-augreg-b\u002F32,dataset=cifar10,crop=resmall_crop --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'` --config.lr=0.03\"\n```\n\n## Run the train script on TPU VMs\n\nTo train your own big_vision models on a large dataset,\ne.g. `imagenet2012` ([prepare the TFDS dataset](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Fimagenet2012)),\nrun the following command line.\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Fbit_i1k.py  --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'`\"\n```\n\n## FSDP training.\n\n`big_vision` supports flexible parameter and model sharding strategies.\nCurrently, we support a popular FSDP sharding via a simple config change, see [this config example](big_vision\u002Fconfigs\u002Ftransfer.py).\nFor example, to run FSDP finetuning of a pretrained ViT-L model, run the following command (possible adjusting batch size depending on your hardware):\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Ftransfer.py:model=vit-i21k-augreg-l\u002F16,dataset=oxford_iiit_pet,crop=resmall_crop,fsdp=True,batch_size=256 --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'` --config.lr=0.03\"\n```\n\n## Image-text training with SigLIP.\n\nA minimal example that uses public `coco` captions data:\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.trainers.proj.image_text.siglip --config big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Fsiglip_lit_coco.py --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002F`date '+%Y-%m-%d_%H%M'`\"\n```\n\n\n\n## Sometimes useful gcloud commands\n\n- Destroy the TPU machines: `gcloud compute tpus tpu-vm delete $NAME --zone $ZONE`\n- Remove all big_vision-related folders on all hosts: `gcloud compute tpus tpu-vm ssh $NAME --zone $ZONE --worker=all --command 'rm -rf ~\u002Fbig_vision ~\u002Fbv_venv'`\n\n## Preparing `tfds` data on a standalone GCP CPU machine.\n\nFirst create a new machine and a disk (feel free to adjust exact machine type and disk settings\u002Fcapacity):\n\n```\nexport NAME_CPU_HOST=\u003CA name of a CPU-only machine>\nexport NAME_DISK=\u003CA name of a disk>\ngcloud compute instances create $NAME_CPU_HOST --machine-type c3-standard-22 --zone $ZONE --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud\ngcloud compute disks create $NAME_DISK --size 1000GB --zone $ZONE --type pd-balanced\n```\n\nNow attach the disk to the newly create machine:\n\n```\ngcloud compute instances attach-disk $NAME_CPU_HOST --disk $NAME_DISK --zone $ZONE\n```\n\nNext, `ssh` to the machine `gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE` and\n[follow instructions to format and mount the disk](https:\u002F\u002Fcloud.google.com\u002Fcompute\u002Fdocs\u002Fdisks\u002Fformat-mount-disk-linux).\nLet's assume it was mounted to `\u002Fmnt\u002Fdisks\u002Ftfds`.\n\nAlmost there, now clone and set up `big_vision`:\n\n```\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"git clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision.git && cd big_vision && sh big_vision\u002Frun_tpu.sh\"\n```\n\nFinally, prepare the dataset (e.g. `coco_captions`) using the utility script and\ncopy the result to you google cloud bucket:\n\n```\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"cd big_vision && TFDS_DATA_DIR=\u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.tools.download_tfds_datasets coco_captions\"\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"rm -rf \u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets\u002Fdownloads && gsutil cp -r \u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets gs:\u002F\u002F$GS_BUCKET_NAME\"\n```\n\n\n# ViT baseline\n\nWe provide a well-tuned ViT-S\u002F16 baseline in the config file named\n`vit_s16_i1k.py`. It achieves 76.5% accuracy on ImageNet validation split in\n90 epochs of training, being a strong and simple starting point for research\non the ViT models.\n\nPlease see our [arXiv note](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580) for more details\nand if this baseline happens to by useful for your research, consider citing\n\n```\n@article{vit_baseline,\n  url = {https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580},\n  author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},\n  title = {Better plain ViT baselines for ImageNet-1k},\n  journal={arXiv preprint arXiv:2205.01580},\n  year = {2022},\n}\n```\n\n# Project specific commits\n\nThe last known commit where the specific project code is expected to work. The\ncore code and configs are expected to work at head.\n\n| Project    | Commit                                                                                        |\n|------------|-----------------------------------------------------------------------------------------------|\n| UViM       | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F21bd6ebe253f070f584d8b777ad76f4abce51bef |\n| image_text | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F8921d5141504390a8a4f7b2dacb3b3c042237290 |\n| distill    | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F2f3f493af048dbfd97555ff6060f31a0e686f17f |\n| GSAM       | WIP                                                                                           |\n| CLIPPO     | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002Ffd2d3bd2efc9d89ea959f16cd2f58ae8a495cd44 |\n| CapPa      | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F7ace659452dee4b68547575352c022a2eef587a5 |\n| GIVT       | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F0cb70881dd33b3343b769347dc19793c4994b8cb |\n\n# Citing the codebase\n\nIf you found this codebase useful for your research, please consider using\nthe following BibTEX to cite it:\n\n```\n@misc{big_vision,\n  author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},\n  title = {Big Vision},\n  year = {2022},\n  publisher = {GitHub},\n  journal = {GitHub repository},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision}}\n}\n```\n\n# Disclaimer\n\nThis is not an official Google Product.\n\n# License\n\nUnless explicitly noted otherwise, everything in the big_vision codebase\n(including models and colabs) is released under the Apache2 license.\nSee the LICENSE file for the full license text.\n","# 大型视觉模型\n\n该代码库旨在使用[Cloud TPU VMs](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fcompute\u002Fintroducing-cloud-tpu-vms)或 GPU 机器来训练大规模视觉模型。它基于[Jax](https:\u002F\u002Fgithub.com\u002Fjax-ml\u002Fjax)\u002F[Flax](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fflax)库，并利用[tf.data](https:\u002F\u002Fwww.tensorflow.org\u002Fguide\u002Fdata)和[TensorFlow Datasets](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets)构建可扩展且可复现的数据流水线。\n\n开源此代码库主要有两个目的：\n1. 发布在此代码库中开发的研究项目代码（见下方列表）。\n2. 为在 GPU 机器和 Google Cloud TPUs 上运行大规模视觉实验提供一个强有力的起点，能够从单个 TPU 核心无缝扩展到最多包含 2048 个 TPU 核心的分布式设置，开箱即用。\n\n`big_vision` 的目标是支持 Google 内部的研究项目。我们通常不会处理功能请求或接受外部贡献，除非事先获得批准（请先在 issue 中咨询）。对于一个得到良好支持的纯迁移代码库，也可以参考[vision_transformer](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fvision_transformer)。\n\n请注意，`big_vision` 是一个非常动态的代码库，尽管我们致力于始终保持核心代码的完全可用性，但我们无法保证位于 `...\u002Fproj\u002F...` 子文件夹中的项目特定代码能够及时更新。不过，我们提供了一个[表格](#project-specific-commits)，列出了已知特定项目可以正常工作的最后提交记录。\n\n以下研究项目最初是在 `big_vision` 代码库中开展的：\n\n### 架构研究\n\n- [一张图胜过 16x16 个词：大规模图像识别中的 Transformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.11929)，作者：Alexey Dosovitskiy*、Lucas Beyer*、Alexander Kolesnikov*、Dirk Weissenborn*、Xiaohua Zhai*、Thomas Unterthiner、Mostafa Dehghani、Matthias Minderer、Georg Heigold、Sylvain Gelly、Jakob Uszkoreit 和 Neil Houlsby*\n- [视觉 Transformer 的规模效应](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.04560)，作者：Xiaohua Zhai*、Alexander Kolesnikov*、Neil Houlsby 和 Lucas Beyer*  \n  资源：[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fscaling_laws\u002Ftrain_vit_g.py)。\n- [如何训练你的 ViT？视觉 Transformer 中的数据、增强与正则化](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.10270)，作者：Andreas Steiner*、Alexander Kolesnikov*、Xiaohua Zhai*、Ross Wightman、Jakob Uszkoreit 和 Lucas Beyer*\n- [MLP-Mixer：一种全 MLP 的视觉架构](https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.01601)，作者：Ilya Tolstikhin*、Neil Houlsby*、Alexander Kolesnikov*、Lucas Beyer*、Xiaohua Zhai、Thomas Unterthiner、Jessica Yung、Andreas Steiner、Daniel Keysers、Jakob Uszkoreit、Mario Lucic 和 Alexey Dosovitskiy  \n  资源：[配置文件](big_vision\u002Fconfigs\u002Fmlp_mixer_i1k.py)。\n- [ImageNet-1k 数据集上更好的纯 ViT 基线](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580)，作者：Lucas Beyer、Xiaohua Zhai、Alexander Kolesnikov  \n  资源：[配置文件](big_vision\u002Fconfigs\u002Fvit_s16_i1k.py)。\n- [UViM：一种基于学习引导码的统一视觉建模方法](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.10337)，作者：Alexander Kolesnikov^*、André Susano Pinto^*、Lucas Beyer*、Xiaohua Zhai*、Jeremiah Harmsen* 和 Neil Houlsby*  \n  资源：[README 文件](big_vision\u002Fconfigs\u002Fproj\u002Fuvim\u002FREADME.md)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fuvim)、[Colab 笔记本](big_vision\u002Fconfigs\u002Fproj\u002Fuvim)。\n- [FlexiViT：一种适用于所有补丁大小的单一模型](https:\u002F\u002Farxiv.org\u002Fabs\u002F2212.08013)，作者：Lucas Beyer*、Pavel Izmailov*、Alexander Kolesnikov*、Mathilde Caron*、Simon Kornblith*、Xiaohua Zhai*、Matthias Minderer*、Michael Tschannen*、Ibrahim Alabdulmohsin* 和 Filip Pavetic*  \n  资源：[README 文件](big_vision\u002Fconfigs\u002Fproj\u002Fflexivit\u002FREADME.md)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fflexivit)。\n- [双层 PatchNorm](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.01327)，作者：Manoj Kumar、Mostafa Dehghani 和 Neil Houlsby。\n- [让 ViT 达到最佳状态：计算最优模型设计的规模法则](https:\u002F\u002Farxiv.org\u002Fabs\u002F2305.13035)，作者：Ibrahim Alabdulmohsin*、Xiaohua Zhai*、Alexander Kolesnikov 和 Lucas Beyer*。\n- （部分）[将视觉 Transformer 扩展至 220 亿参数](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.05442)，作者：Mostafa Dehghani*、Josip Djolonga*、Basil Mustafa*、Piotr Padlewski*、Jonathan Heek*、*众多中间作者* 和 Neil Houlsby*。\n- （部分）[有限标量量化：简化版 VQ-VAE](https:\u002F\u002Farxiv.org\u002Fabs\u002F2309.15505)，作者：Fabian Mentzer、David Minnen、Eirikur Agustsson 和 Michael Tschannen。\n- [GIVT：生成式无限词汇表 Transformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2312.02116)，作者：Michael Tschannen、Cian Eastwood 和 Fabian Mentzer。  \n  资源：[README 文件](big_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002FREADME.md)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002Fgivt_imagenet2012.py)、[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fgivt\u002Fgivt_demo_colab.ipynb)。\n- [基于掩码扩散的统一自编码](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.17688)，作者：Philippe Hansen-Estruch、Sriram Vishwanath、Amy Zhang 和 Manan Tomar。\n- [Jet：一种现代基于 Transformer 的归一化流](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15129)，作者：Alexander Kolesnikov*、André Susano Pinto*、Michael Tschannen*、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fjet)。\n- [JetFormer：一种自回归生成模型，用于处理原始图像和文本](https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.19722)，作者：Michael Tschannen*、André Susano Pinto* 和 Alexander Kolesnikov*。[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fjetformer)。\n\n### 多模态研究\n\n- [LiT：锁定图像的文本调优实现零样本迁移](https:\u002F\u002Farxiv.org\u002Fabs\u002F2111.07991)，作者：\n  Xiaohua Zhai*、Xiao Wang*、Basil Mustafa*、Andreas Steiner*、Daniel Keysers、Alexander Kolesnikov 和 Lucas Beyer*\\\n  资源：[训练器](big_vision\u002Ftrainers\u002Fproj\u002Fimage_text\u002Fcontrastive.py)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Flit_coco.py)、[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Flit.ipynb)。\n- [CLIPPO：仅从像素进行图像与语言理解](https:\u002F\u002Farxiv.org\u002Fabs\u002F2212.08045)，作者：\n  Michael Tschannen、Basil Mustafa、Neil Houlsby\\\n  资源：[README](big_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002FREADME.md)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002Ftrain_clippo.py)、[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fclippo\u002Fclippo_colab.ipynb)。\n- [用于语言图像预训练的 Sigmoid 损失](https:\u002F\u002Farxiv.org\u002Fabs\u002F2303.15343)，作者：\n  Xiaohua Zhai*、Basil Mustafa、Alexander Kolesnikov、Lucas Beyer*\\\n  资源：[Colab 笔记本及模型](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FSigLIP_demo.ipynb)，代码待补充。\n- [计算机视觉多任务学习中自回归解码器的研究](https:\u002F\u002Farxiv.org\u002Fabs\u002F2303.17376)，作者：\n  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*。\n- [图像字幕生成器同样是可扩展的视觉学习者](https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.07915)，作者：\n  Michael Tschannen*、Manoj Kumar*、Andreas Steiner*、Xiaohua Zhai、Neil Houlsby、Lucas Beyer*。\\\n  资源：[README](big_vision\u002Fconfigs\u002Fproj\u002Fcappa\u002FREADME.md)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fcappa\u002Fpretrain.py)、[模型](big_vision\u002Fmodels\u002Fproj\u002Fcappa\u002Fcappa.py)。\n- [三塔：基于预训练图像模型的灵活对比学习](https:\u002F\u002Farxiv.org\u002Fabs\u002F2305.16999)，作者：Jannik Kossen、Mark Collier、Basil Mustafa、Xiao Wang、Xiaohua Zhai、Lucas Beyer、Andreas Steiner、Jesse Berent、Rodolphe Jenatton、Efi Kokiopoulou。\n- （部分）[PaLI：联合缩放的多语言语言-图像模型](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.06794)，作者：Xi Chen、Xiao Wang、Soravit Changpinyo、*哇，中间作者真多*、Anelia Angelova、Xiaohua Zhai、Neil Houlsby、Radu Soricut。\n- （部分）[PaLI-3 视觉语言模型：更小、更快、更强](https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.09199)，作者：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。\n- [LocCa](https:\u002F\u002Farxiv.org\u002Fabs\u002F2403.19596)，作者：\n  Bo Wan、Michael Tschannen、Yongqin Xian、Filip Pavetic、Ibrahim Alabdulmohsin、Xiao Wang、André Susano Pinto、Andreas Steiner、Lucas Beyer、Xiaohua Zhai。\n- [PaliGemma](https:\u002F\u002Farxiv.org\u002Fabs\u002F2407.07726)、\n  [PaliGemma 2](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.03555)，作者：*哇，作者真多*。\\\n  资源：[README](big_vision\u002Fconfigs\u002Fproj\u002Fpaligemma\u002FREADME.md)、\n    [模型](big_vision\u002Fmodels\u002Fproj\u002Fpaligemma\u002Fpaligemma.py)、\n    [迁移配置](big_vision\u002Fconfigs\u002Fproj\u002Fpaligemma\u002Ftransfers)、\n    [数据集](big_vision\u002Fdatasets)、\n    [CountBenchQA](big_vision\u002Fdatasets\u002Fcountbenchqa\u002Fdata\u002Fcountbench_paired_questions.json)。\n- [SigLIP 2：具有改进语义理解、定位能力和密集特征的多语言视觉-语言编码器](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.14786)，作者：*哇，作者真多*。\\\n  资源：[README（含检查点）](big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FREADME_siglip2.md)、[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fgoogle-research\u002Fbig_vision\u002Fblob\u002Fmain\u002Fbig_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002FSigLIP2_demo.ipynb)。\n\n### 训练\n\n- [知识蒸馏：好老师要有耐心和一致性](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.05237)，作者：\n  Lucas Beyer*、Xiaohua Zhai*、Amélie Royer*、Larisa Markeeva*、Rohan Anil、以及 Alexander Kolesnikov*\\\n  资源：[README](big_vision\u002Fconfigs\u002Fproj\u002Fdistill\u002FREADME.md)、[训练器](big_vision\u002Ftrainers\u002Fproj\u002Fdistill\u002Fdistill.py)、[Colab 笔记本](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1nMykzUzsfQ_uAxfj3k35DYsATnG_knPl?usp=sharing)。\n- [尖锐度感知最小化：高效提升泛化能力的方法](https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.01412)，作者：\n  Pierre Foret、Ariel Kleiner、Hossein Mobahi、Behnam Neyshabur。\n- [代理差距最小化改进尖锐度感知训练](https:\u002F\u002Farxiv.org\u002Fabs\u002F2203.08065)，作者：Juntang Zhuang、Boqing Gong、Liangzhe Yuan、Yin Cui、Hartwig Adam、Nicha Dvornek、Sekhar Tatikonda、James Duncan 和 Ting Liu \\\n  资源：[训练器](big_vision\u002Ftrainers\u002Fproj\u002Fgsam\u002Fgsam.py)、[配置文件](big_vision\u002Fconfigs\u002Fproj\u002Fgsam\u002Fvit_i1k_gsam_no_aug.py)、[复现结果](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fpull\u002F8#pullrequestreview-1078557411)。\n- [使用任务奖励微调计算机视觉模型](https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.08242)，作者：\n  André Susano Pinto*、Alexander Kolesnikov*、Yuge Shi、Lucas Beyer、Xiaohua Zhai。\n- （部分）[VeLO：通过扩大规模训练多功能学习优化器](https:\u002F\u002Farxiv.org\u002Fabs\u002F2211.09760)，作者：\n  Luke Metz、James Harrison、C. Daniel Freeman、Amil Merchant、Lucas Beyer、James Bradbury、Naman Agrawal、Ben Poole、Igor Mordatch、Adam Roberts、Jascha Sohl-Dickstein。\n\n### 杂项\n\n- [我们已经用完 ImageNet 了吗？](https:\u002F\u002Farxiv.org\u002Fabs\u002F2006.07159)，作者：\n  Lucas Beyer*、Olivier J. Hénaff*、Alexander Kolesnikov*、Xiaohua Zhai*、Aäron van den Oord*。\n- [无过滤：对比式视觉-语言模型中的文化与社会经济多样性](https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.13777)，作者：\n  Angéline Pouget、Lucas Beyer、Emanuele Bugliarello、Xiao Wang、Andreas Peter Steiner、Xiaohua Zhai、Ibrahim Alabdulmohsin。\n\n# 代码库的高层次组织与原则概览\n\n主入口是一个训练器模块，它通常负责创建模型和优化器、加载数据、保存检查点以及在循环中进行训练和评估等所有样板代码。我们在根目录下提供了标准的训练器 `train.py`。通常，`big_vision` 中的各个项目会基于此训练器进行分支并定制。\n\n所有模型、评估器和预处理操作都位于相应的子目录中，并且经常可以在不同项目之间复用。我们鼓励这些目录内的 API 兼容，以促进复用性，但这并不是强制性的，因为各个项目可能需要引入自己的自定义 API。\n\n我们有一个强大的配置系统，配置文件存放在 `configs\u002F` 目录中。自定义的训练器和模块可以直接扩展或修改配置选项。\n\n项目特定的代码位于 `...\u002Fproj\u002F...` 命名空间中。由于各种原因，项目特定的代码并不总是能够与核心 `big_vision` 库保持同步。下面列出了每个项目在预期可以正常工作的 [最新已知提交](#project-specific-commits)。\n\n训练任务对中断具有鲁棒性，可以从上次保存的检查点无缝恢复（前提是用户提供了正确的 `--workdir` 路径）。\n\n每个配置文件的顶部都包含一个注释，其中有一段用于运行该配置的 `COMMAND` 代码片段，以及对预期运行时间和结果的一些提示。更多详细信息请见下文，但一般来说，在 GPU 机器上运行时只需调用 `python -m COMMAND`；而在 TPU 上运行时（包括多主机场景），则需要执行以下命令：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all\n  --command \"bash big_vision\u002Frun_tpu.sh COMMAND\"\n```\n\n有关如何在 GPU 机器或 Google Cloud TPU 上运行 `big_vision` 代码的详细说明，请参阅下方内容。\n\n默认情况下，我们会写入检查点和日志文件。日志文件是以 JSON 对象组成的列表，我们提供了一个简短而直接的 [示例 Colab，用于读取和显示日志及检查点](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1R_lvV542WUp8Q2y8sbyooZOGCplkn7KI?usp=sharing)。\n\n# 当前与未来的内容\n\n首次发布包含了在 Cloud TPU VM 上大规模预训练、迁移和评估分类模型的核心部分。\n\n此后，我们又添加了以下关键功能和项目：\n- 类似 LiT 和 CLIP 的对比图像-文本模型训练与评估。\n- 稳健且一致的蒸馏技术。\n- ViT 的规模扩展。\n- MLP-Mixer。\n- UViM。\n\n我们计划在近期发布的功能和项目（不分先后顺序）包括：\n- TFDS 中的 ImageNet-21k 数据集。\n- 加载我们在论文中使用的其他公开模型（NFNet、MoCov3、DINO）。\n- 内存高效的 Polyak 平滑实现。\n- 高级 JAX 计算与内存分析工具。目前我们使用的是内部工具，但未来可能会增加对公开可用工具的支持。\n\n我们将继续在此处发布在 `big_vision` 框架内开发的未来研究成果代码。\n\n### 非内容部分\n\n以下内容存在于该代码库的内部版本中，目前暂无对外发布的计划：\n- 针对质量和速度的常规回归测试，它们高度依赖于内部基础设施。\n- 实验的高级日志记录、监控和可视化工具，这也严重依赖于内部基础设施。不过，我们对此持开放态度，未来可能会加入一些功能，尤其是如果能以独立的方式实现的话。\n- 尚未发表的正在进行中的研究项目。\n\n# GPU 设置\n\n我们首先讨论如何在本地 GPU 机器上设置和运行 `big_vision`，然后再介绍 Cloud TPU 的设置方法。需要注意的是，本地 GPU 设置中的数据准备步骤在很大程度上也可以用于 Cloud TPU 设置。虽然为了简洁起见，相关说明中省略了这一步骤，但我们强烈建议在安装 Python 依赖时使用 [虚拟环境](https:\u002F\u002Fdocs.python.org\u002F3\u002Flibrary\u002Fvenv.html)。\n\n## 安装 Python 包\n\n第一步是克隆 `big_vision` 仓库并安装相关的 Python 依赖：\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\ncd big_vision\u002F\npip3 install --upgrade pip\npip3 install -r big_vision\u002Frequirements.txt\n```\n\n最新版本的 `jax` 库可以通过以下命令获取：\n\n```\npip3 install --upgrade \"jax[cuda]\" -f https:\u002F\u002Fstorage.googleapis.com\u002Fjax-releases\u002Fjax_cuda_releases.html\n```\n\n根据您机器上安装的 CUDA 和 cuDNN 库版本，您可能需要选择不同的 `jax` 包。更多信息请参考 [官方 JAX 文档](https:\u002F\u002Fgithub.com\u002Fjax-ml\u002Fjax#pip-installation-gpu-cuda)。\n\n## 准备 tfds 数据\n\n为了统一且可复现地访问标准数据集，我们选择了 `tensorflow_datasets` (`tfds`) 库。使用该库时，需要先下载并预处理每个数据集，然后将其存储在硬盘上（或者，如果您使用 Google Cloud，则最好存储在 GCP 存储桶中）。\n\n许多数据集在首次使用时可以自动下载和预处理。尽管如此，我们特意禁用了这一功能，建议在首次运行之前单独完成数据准备步骤。这样可以在出现问题时更方便地进行调试，而且某些数据集，如 `imagenet2012`，需要手动下载数据。\n\n大多数数据集，例如 `cifar100`、`oxford_iiit_pet` 或 `imagenet_v2`，都可以通过运行以下命令完全自动地下载和准备：\n\n```\ncd big_vision\u002F\npython3 -m big_vision.tools.download_tfds_datasets cifar100 oxford_iiit_pet imagenet_v2\n```\n\n完整的数据集列表可在 [此链接](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Foverview#all_datasets) 查看。\n\n然而，有些数据集，如 `imagenet2012` 或 `imagenet2012_real`，需要手动下载数据并放置到 `$TFDS_DATA_DIR\u002Fdownloads\u002Fmanual\u002F` 目录中，该目录的默认路径为 `~\u002Ftensorflow_datasets\u002Fdownloads\u002Fmanual\u002F`。例如，对于 `imagenet2012` 和 `imagenet2012_real`，需要将官方的 `ILSVRC2012_img_train.tar` 和 `ILSVRC2012_img_val.tar` 文件放入该目录，然后运行：\n\n```\npython3 -m big_vision.tools.download_tfds_datasets imagenet2012 imagenet2012_real\n```\n\n（这可能需要大约 1 小时。）\n\n如果您使用 Google Cloud，特别是 TPU，可以将预处理后的数据（存储在 `$TFDS_DATA_DIR` 中）上传到 Google Cloud 存储桶，并在任何 TPU 虚拟机上使用该存储桶来访问数据。\n\n## 在 GPU 机器上运行\n\n最后，在安装完所有 Python 依赖并准备好 `tfds` 数据后，用户可以使用自己选择的配置来运行任务。例如，要在 ImageNet 数据上训练 `ViT-S\u002F16` 模型，应运行以下命令：\n\n```\npython3 -m big_vision.train --config big_vision\u002Fconfigs\u002Fvit_s16_i1k.py --workdir workdirs\u002F`date '+%m-%d_%H%M'`\n```\n\n或者要训练 MLP-Mixer-B\u002F16，可以运行（注意 `gpu8` 配置参数会减少默认的批大小和 epoch 数）：\n\n```\npython3 -m big_vision.train --config big_vision\u002Fconfigs\u002Fmlp_mixer_i1k.py:gpu8 --workdir workdirs\u002F`date '+%m-%d_%H%M'`\n```\n\n# Cloud TPU VM 设置\n\n## 创建 TPU VM\n\n要创建一台拥有 8 个 TPU 核心的单机，请按照以下 Cloud TPU JAX 文档操作：\nhttps:\u002F\u002Fcloud.google.com\u002Ftpu\u002Fdocs\u002Frun-calculation-jax\n\n为了支持大规模视觉研究，建议使用多台主机以获得更多核心。下面我们将提供如何实现这一目标的说明。\n\n首先，创建一些可重复使用的变量：\n\n```\nexport NAME=\u003CTPU 部署名称，例如 my-tpu-machine>\nexport ZONE=\u003CGCP 地理区域，例如 europe-west4-a>\nexport GS_BUCKET_NAME=\u003C存储桶名称，例如 my_bucket>\n```\n\n以下命令行将创建一个拥有 32 个核心、4 台主机的 TPU VM：\n\n```\ngcloud compute tpus tpu-vm create $NAME --zone $ZONE --accelerator-type v3-32 --version tpu-ubuntu2204-base\n```\n\n## 在 TPU VM 上安装 `big_vision`\n\n获取 `big_vision` 仓库，将其复制到所有 TPU VM 主机，并安装依赖项。\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\ngcloud compute tpus tpu-vm scp --recurse big_vision\u002Fbig_vision $NAME: --zone=$ZONE --worker=all\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"bash big_vision\u002Frun_tpu.sh\"\n```\n\n## 下载并准备 TFDS 数据集\n\n我们建议先按照上述方法在本地准备 `tfds` 数据，然后再将其上传到 `Google Cloud` 存储桶。不过，如果您愿意，也可以使用 TPU 机器自动准备那些无需手动下载的数据集，具体步骤如下。请注意，TPU 机器仅有 100 GB 的磁盘空间，且多主机 TPU 分片不允许以写入模式挂载外部磁盘，因此以下说明可能不适用于大型数据集的准备。作为另一种替代方案，我们还提供了 [如何在仅 CPU 的 GCP 机器上准备 `tfds` 数据](#preparing-tfds-data-on-a-standalone-gcp-cpu-machine) 的说明。\n\n具体来说，评估过程中使用的七个 TFDS 数据集将在 TPU 机器上的 `~\u002Ftensorflow_datasets` 目录下通过以下命令生成：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command \"TFDS_DATA_DIR=~\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.tools.download_tfds_datasets cifar10 cifar100 oxford_iiit_pet oxford_flowers102 cars196 dtd uc_merced\"\n```\n\n随后，您可以将这些数据集复制到 GS 存储桶，以便所有 TPU 工作节点都能访问。\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=0 --command \"rm -r ~\u002Ftensorflow_datasets\u002Fdownloads && gsutil cp -r ~\u002Ftensorflow_datasets gs:\u002F\u002F$GS_BUCKET_NAME\"\n```\n\n如果您希望集成其他公共或自定义数据集，例如 imagenet2012，请遵循 [官方指南](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Foverview)。\n\n## 预训练模型\n\n有关预训练模型的完整列表，请查看与模型代码位于同一模块中的 `load` 函数。关于如何使用这些模型的示例配置，请参阅 `configs\u002Ftransfer.py`。\n\n## 在 TPU VM 上运行迁移学习脚本\n\n以下命令行将在 `cifar10` 数据集上微调一个预训练的 `vit-i21k-augreg-b\u002F32` 模型：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Ftransfer.py:model=vit-i21k-augreg-b\u002F32,dataset=cifar10,crop=resmall_crop --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'` --config.lr=0.03\"\n```\n\n## 在 TPU VM 上运行训练脚本\n\n要在一个大型数据集上训练您自己的 `big_vision` 模型，例如 `imagenet2012`（请先 [准备 TFDS 数据集](https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Fimagenet2012)），可以运行以下命令行：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Fbit_i1k.py  --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'`\"\n```\n\n## FSDP 训练\n\n`big_vision` 支持灵活的参数和模型分片策略。目前，我们通过简单的配置更改即可支持流行的 FSDP 分片，详情请参见 [此配置示例](big_vision\u002Fconfigs\u002Ftransfer.py)。例如，要对预训练的 ViT-L 模型进行 FSDP 微调，可以运行以下命令（可根据您的硬件调整批大小）：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.train --config big_vision\u002Fconfigs\u002Ftransfer.py:model=vit-i21k-augreg-l\u002F16,dataset=oxford_iiit_pet,crop=resmall_crop,fsdp=True,batch_size=256 --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002Fworkdir\u002F`date '+%m-%d_%H%M'` --config.lr=0.03\"\n```\n\n## 使用 SigLIP 进行图像-文本联合训练\n\n一个使用公开 `coco` 字幕数据的最小示例：\n\n```\ngcloud compute tpus tpu-vm ssh $NAME --zone=$ZONE --worker=all --command \"TFDS_DATA_DIR=gs:\u002F\u002F$GS_BUCKET_NAME\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.trainers.proj.image_text.siglip --config big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Fsiglip_lit_coco.py --workdir gs:\u002F\u002F$GS_BUCKET_NAME\u002Fbig_vision\u002F`date '+%Y-%m-%d_%H%M'`\"\n```\n\n\n\n## 有时有用的 gcloud 命令\n\n- 销毁 TPU 机器：`gcloud compute tpus tpu-vm delete $NAME --zone $ZONE`\n- 删除所有主机上的 `big_vision` 相关文件夹：`gcloud compute tpus tpu-vm ssh $NAME --zone $ZONE --worker=all --command 'rm -rf ~\u002Fbig_vision ~\u002Fbv_venv'`\n\n## 在独立的 GCP CPU 机器上准备 `tfds` 数据。\n\n首先创建一台新机器和一块磁盘（您可以根据需要调整具体的机器类型和磁盘设置\u002F容量）：\n\n```\nexport NAME_CPU_HOST=\u003C仅CPU机器的名称>\nexport NAME_DISK=\u003C磁盘的名称>\ngcloud compute instances create $NAME_CPU_HOST --machine-type c3-standard-22 --zone $ZONE --image-family ubuntu-2204-lts --image-project ubuntu-os-cloud\ngcloud compute disks create $NAME_DISK --size 1000GB --zone $ZONE --type pd-balanced\n```\n\n现在将磁盘挂载到新创建的机器上：\n\n```\ngcloud compute instances attach-disk $NAME_CPU_HOST --disk $NAME_DISK --zone $ZONE\n```\n\n接下来，通过 `ssh` 登录到该机器：`gcloud compute ssh $NAME_CPU_HOST --zone=$ZONE`，并\n[按照说明格式化和挂载磁盘](https:\u002F\u002Fcloud.google.com\u002Fcompute\u002Fdocs\u002Fdisks\u002Fformat-mount-disk-linux)。\n假设它被挂载到了 `\u002Fmnt\u002Fdisks\u002Ftfds`。\n\n差不多完成了，现在克隆并设置 `big_vision`：\n\n```\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"git clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision.git && cd big_vision && sh big_vision\u002Frun_tpu.sh\"\n```\n\n最后，使用工具脚本准备数据集（例如 `coco_captions`），并将结果复制到您的 Google Cloud 存储桶中：\n\n```\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"cd big_vision && TFDS_DATA_DIR=\u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets bash big_vision\u002Frun_tpu.sh big_vision.tools.download_tfds_datasets coco_captions\"\ngcloud compute ssh $NAME_CPU_HOST --zone=$ZONE --command \"rm -rf \u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets\u002Fdownloads && gsutil cp -r \u002Fmnt\u002Fdisks\u002Ftfds\u002Ftensorflow_datasets gs:\u002F\u002F$GS_BUCKET_NAME\"\n```\n\n\n# ViT 基线\n\n我们在名为 `vit_s16_i1k.py` 的配置文件中提供了一个经过良好调优的 ViT-S\u002F16 基线。在 90 个训练周期内，它在 ImageNet 验证集上达到了 76.5% 的准确率，是研究 ViT 模型的一个强大而简单的起点。\n\n请参阅我们的 [arXiv 报告](https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580) 以获取更多详细信息；如果这个基线对您的研究有所帮助，请考虑引用以下内容：\n\n```\n@article{vit_baseline,\n  url = {https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.01580},\n  author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},\n  title = {Better plain ViT baselines for ImageNet-1k},\n  journal={arXiv preprint arXiv:2205.01580},\n  year = {2022},\n}\n```\n\n# 项目特定提交记录\n\n以下是已知的最后一个提交记录，预计该项目代码在此版本下能够正常运行。核心代码和配置则应在最新版本下正常工作。\n\n| 项目    | 提交                                                                                         |\n|------------|----------------------------------------------------------------------------------------------|\n| UViM       | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F21bd6ebe253f070f584d8b777ad76f4abce51bef |\n| image_text | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F8921d5141504390a8a4f7b2dacb3b3c042237290 |\n| distill    | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F2f3f493af048dbfd97555ff6060f31a0e686f17f |\n| GSAM       | 开发中                                                                                       |\n| CLIPPO     | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002Ffd2d3bd2efc9d89ea959f16cd2f58ae8a495cd44 |\n| CapPa      | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F7ace659452dee4b68547575352c022a2eef587a5 |\n| GIVT       | https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fcommit\u002F0cb70881dd33b3343b769347dc19793c4994b8cb |\n\n# 引用代码库\n\n如果您发现此代码库对您的研究有所帮助，请考虑使用以下 BibTEX 格式来引用它：\n\n```\n@misc{big_vision,\n  author = {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander},\n  title = {Big Vision},\n  year = {2022},\n  publisher = {GitHub},\n  journal = {GitHub repository},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision}}\n}\n```\n\n# 免责声明\n\n本项目并非 Google 官方产品。\n\n# 许可证\n\n除非另有明确说明，否则 big_vision 代码库中的所有内容（包括模型和 Colab 笔记本）均采用 Apache 2.0 许可证发布。\n完整的许可证文本请参阅 LICENSE 文件。","# Big Vision 快速上手指南\n\n`big_vision` 是 Google Research 开源的大规模视觉模型训练代码库，基于 Jax\u002FFlax 构建，专为在 Cloud TPU VMs 或 GPU 机器上扩展训练而设计。它支持从单核到 2048 核 TPU 的无缝分布式训练，涵盖了 ViT、MLP-Mixer、SigLIP、PaliGemma 等前沿研究项目。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐 Ubuntu 20.04+)\n- **硬件**: \n  - **GPU**: 支持 CUDA 的 NVIDIA GPU (需安装对应驱动)\n  - **TPU**: Google Cloud TPU VMs (推荐用于大规模实验)\n- **Python**: 3.10 或更高版本\n\n### 前置依赖\n确保已安装以下基础工具：\n- `git`\n- `python3-pip`\n- `virtualenv` (可选但推荐)\n\n> **注意**：本项目重度依赖 JAX 生态。若使用 GPU，请确保已正确安装 CUDA Toolkit 和 cuDNN。国内用户建议使用阿里云或清华源加速 Python 包下载。\n\n## 安装步骤\n\n1. **克隆仓库**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision.git\n   cd big_vision\n   ```\n\n2. **创建虚拟环境并激活**\n   ```bash\n   python3 -m venv venv\n   source venv\u002Fbin\u002Factivate\n   ```\n\n3. **安装依赖**\n   \n   **方案 A：通用安装 (适用于大多数 GPU\u002FCPU 环境)**\n   先升级 pip，然后安装核心依赖。国内用户可临时切换镜像源：\n   ```bash\n   pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple --upgrade pip\n   pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple -e .\n   ```\n   *注：`-e .` 表示以编辑模式安装，方便修改代码。*\n\n   **方案 B：针对 TPU 环境 (Google Cloud TPU VM)**\n   如果在 TPU VM 上运行，通常预装了相关环境，只需安装项目特定依赖：\n   ```bash\n   pip install -e .\n   ```\n   *若需特定版本的 JAX\u002FFlax 以匹配 TPU 运行时，请参考 [Cloud TPU JAX 安装指南](https:\u002F\u002Fcloud.google.com\u002Ftpu\u002Fdocs\u002Fjax-quickstart-tpu-vm)。*\n\n4. **验证安装**\n   尝试导入核心库确认无报错：\n   ```bash\n   python -c \"import big_vision; print('Big Vision installed successfully')\"\n   ```\n\n## 基本使用\n\n`big_vision` 的核心入口是训练器脚本 `train.py`。它通过配置文件驱动模型架构、数据集、优化器和训练策略。\n\n### 1. 最简单的运行示例\n以下命令使用默认配置在本地（单 GPU 或 CPU）启动一个小型 ViT 模型的训练演示。该配置通常用于快速验证环境是否就绪。\n\n```bash\npython train.py --config big_vision\u002Fconfigs\u002Fvit_s16_i1k.py\n```\n\n*说明：此命令会加载 ImageNet-1k 的小型 ViT 配置。首次运行会自动下载数据集（需联网），请确保存储空间充足。*\n\n### 2. 使用特定研究项目配置\n`big_vision` 包含大量复现论文的配置。例如，运行 **SigLIP** (Sigmoid Loss for Language Image Pre-Training) 的演示：\n\n```bash\n# 运行 SigLIP 演示配置 (需根据实际文件路径调整)\npython train.py --config big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Flit_coco.py\n```\n\n或者运行 **MLP-Mixer** 的训练：\n```bash\npython train.py --config big_vision\u002Fconfigs\u002Fmlp_mixer_i1k.py\n```\n\n### 3. 关键参数说明\n在执行 `train.py` 时，常用参数如下：\n\n- `--config`: 指定配置文件路径 (`.py` 文件)。\n- `--workdir`: 指定模型检查点、日志和 TensorBoard 数据的保存目录 (默认为当前目录下的 `workdir`)。\n- `--mode`: 运行模式，如 `train` (训练), `eval` (评估), `write_results` (输出结果)。\n\n**示例：指定工作目录进行训练**\n```bash\npython train.py \\\n  --config big_vision\u002Fconfigs\u002Fvit_s16_i1k.py \\\n  --workdir \u002Fpath\u002Fto\u002Fyour\u002Fexperiment_output\n```\n\n### 4. 在 Colab 中体验\n对于不想配置本地环境的用户，许多项目提供了直接的 Colab 笔记本。例如 GIVT 或 PaliGemma 的 Demo：\n- 访问仓库中的 `big_vision\u002Fconfigs\u002Fproj\u002F...` 目录查找 `.ipynb` 文件链接。\n- 点击 \"Open in Colab\" 即可在云端免费 GPU\u002FTPU 上运行。\n\n---\n**提示**：`big_vision` 是一个动态的研究代码库，部分位于 `proj\u002F` 子文件夹中的特定项目代码可能随时间变化。建议在使用特定论文代码前，查阅该子文件夹下的 `README.md` 获取最新的 commit 哈希值或特定说明。","某大型电商公司的算法团队正致力于训练一个超大规模视觉模型，以精准识别海量商品图片中的细粒度特征（如服装纹理、材质细节），从而提升搜索推荐准确率。\n\n### 没有 big_vision 时\n- **分布式训练门槛极高**：团队需手动编写复杂的底层代码才能在多张 GPU 或 TPU 上并行训练，从单卡扩展到千卡集群往往需要数周调试，且极易出现通信瓶颈。\n- **复现顶尖模型困难**：想要尝试 ViT、SigLIP 或 MLP-Mixer 等前沿架构时，缺乏官方统一的高质量实现，只能依赖社区碎片化代码，导致实验结果难以复现且性能不稳定。\n- **数据管道成为瓶颈**：面对亿级图像数据，自建的输入流水线无法高效支撑大规模训练，经常因数据加载速度慢导致昂贵的计算资源闲置等待。\n- **超参数调优盲目**：缺乏经过大规模验证的基准配置（Baseline），团队在调整学习率、增强策略等超参数时如同“盲人摸象”，消耗大量算力却难有突破。\n\n### 使用 big_vision 后\n- **无缝弹性扩展**：基于 JAX\u002FFlax 构建的架构支持“开箱即用”的分布式训练，团队可轻松将任务从单核 TPU 平滑扩展至 2048 核集群，大幅缩短模型迭代周期。\n- **直接复用权威架构**：直接调用内置的 ViT、FlexiViT 等经过谷歌验证的官方代码和配置文件，确保模型结构的最优性，让研发重心回归到业务逻辑创新。\n- **高效可扩展的数据流**：利用集成的 tf.data 和 TensorFlow Datasets 构建高吞吐输入管道，完美匹配大规模计算需求，彻底消除数据加载导致的算力浪费。\n- **站在巨人肩膀上调优**：直接参考官方提供的缩放定律（Scaling Laws）配置和最佳实践，快速锁定最优超参数组合，显著提升了最终模型的识别精度。\n\nbig_vision 通过提供工业级的大规模视觉训练基础设施，让研发团队能从繁琐的工程泥潭中解脱，专注于探索视觉模型的性能极限。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle-research_big_vision_f1ce152d.png","google-research","Google Research","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgoogle-research_c23b2adf.png","",null,"https:\u002F\u002Fresearch.google","https:\u002F\u002Fgithub.com\u002Fgoogle-research",[22,26,30,34,38,41,45],{"name":23,"color":24,"percentage":25},"Jupyter Notebook","#DA5B0B",63.6,{"name":27,"color":28,"percentage":29},"Python","#3572A5",35.3,{"name":31,"color":32,"percentage":33},"TypeScript","#3178c6",0.9,{"name":35,"color":36,"percentage":37},"SCSS","#c6538c",0.1,{"name":39,"color":40,"percentage":37},"HTML","#e34c26",{"name":42,"color":43,"percentage":44},"Shell","#89e051",0,{"name":46,"color":47,"percentage":44},"JavaScript","#f1e05a",3414,219,"2026-04-09T07:14:31","Apache-2.0",5,"Linux","支持 GPU 机器或 Google Cloud TPU VMs。若使用 GPU，需兼容 JAX\u002FCUDA 的 NVIDIA 显卡（具体型号未说明），支持从单卡到多卡分布式训练；若使用 TPU，支持最多 2048 核心。","未说明",{"notes":57,"python":55,"dependencies":58},"该代码库主要基于 JAX\u002FFlax 框架，专为在 Google Cloud TPU VMs 或 GPU 机器上训练大规模视觉模型设计。它支持从单个 TPU 核心无缝扩展到 2048 个核心的分布式设置。官方主要支持研究用途，不保证及时响应外部功能请求或贡献。部分特定项目的代码可能随时间变化，建议参考文档中提供的已知可用 commit 版本。",[59,60,61,62],"jax","flax","tensorflow (tf.data)","tensorflow-datasets",[64,65],"图像","开发框架",2,"ready","2026-03-27T02:49:30.150509","2026-04-10T04:37:24.411865",[71,76,81,86,91,95],{"id":72,"question_zh":73,"answer_zh":74,"source_url":75},27126,"是否计划发布 CLIPPO 模型的其他规模（如 ViT-H-14, ViT-L）的检查点？","目前团队没有计划发布额外的检查点。维护者表示可以考虑训练一个 L\u002F16 模型用于发布（例如使用 ImageNet21k 初始化，在 YFCC-100M + 25% C4 数据上训练），但这类模型的表现通常不如论文中主要在 WebLI 数据集上训练的主模型。如果用户有特定需求，可以反馈看是否有兴趣。","https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fissues\u002F29",{"id":77,"question_zh":78,"answer_zh":79,"source_url":80},27127,"如何运行 SigLIP 的训练代码？是否有可用的配置文件？","虽然 README 中标记为 TODO，但实际上代码已实现。可以使用以下配置文件进行 SigLIP 训练：`big_vision\u002Fconfigs\u002Fproj\u002Fimage_text\u002Fsiglip_lit_coco.py`。这是一个在 COCO Captions 数据集上运行的最小示例，不要期望获得最佳结果。运行命令参考：`big_vision.trainers.proj.image_text.contrastive --config ... --workdir ...`。","https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fissues\u002F58",{"id":82,"question_zh":83,"answer_zh":84,"source_url":85},27128,"为什么在训练开始的前几次迭代中梯度（grads）全为 0（除了头层参数）？","这通常是由于 `head_zeroinit = True` 的默认设置导致的。在第一次迭代时学习率为 0，不更新参数；在第二次迭代时，最后一层头部的核权重仍为 0，导致梯度无法反向传播到更早的层。从第三次迭代开始，梯度通常会变为非零。这是预期现象。相关代码位置：`big_vision\u002Fmodels\u002Fvit.py` 第 162 行。","https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fissues\u002F37",{"id":87,"question_zh":88,"answer_zh":89,"source_url":90},27129,"在 TPU 上训练时遇到后端初始化失败或找不到驱动的错误怎么办？","确保正确设置了 TPU 环境并使用正确的命令启动。用户成功复现的经验表明，需要确认 TPU v3-8 机器已正确配置，并且 ImageNet 数据集已按照 TensorFlow Datasets 的要求结构化存储在 GCS bucket 中。启动命令应包含 `TFDS_DATA_DIR` 环境变量指向数据集路径，并通过 `gcloud alpha compute tpus tpu-vm ssh` 连接所有 worker 执行训练脚本。如果遇到 `imagenet2012_real` 相关错误，需检查数据集拆分配置。","https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbig_vision\u002Fissues\u002F2",{"id":92,"question_zh":93,"answer_zh":94,"source_url":85},27130,"配置文件中使用的 `value_range(-1, 1)` 对复现 ImageNet 结果是必须的吗？","是的，配置文件中指定 `value_range(-1, 1)` 是为了匹配预处理流程。这与传统的 `vgg_value_range` 不同，是为了适应特定的模型架构和训练设置。在复现正常 ImageNet 数据集上的结果时，应遵循配置文件中的设定，以确保输入数据的数值范围与预训练模型或论文实验保持一致。",{"id":96,"question_zh":97,"answer_zh":98,"source_url":80},27131,"SigLIP 论文中提到冻结图像编码器训练文本编码器效果很好，反过来训练图像编码器可行吗？","这是一个有趣的研究方向。论文实验中使用了巨大的批量大小（20k）和总步数（107k），在 2 天内完成了训练。如果反过来，使用预训练的文本表示从头训练 ViT 图像编码器，所需时间取决于具体的硬件配置、批量大小和数据集规模。目前代码库支持这种配置，但具体耗时和效果需要用户根据实际资源进行实验验证。",[],[101,112,120,129,137,146],{"id":102,"name":103,"github_repo":104,"description_zh":105,"stars":106,"difficulty_score":107,"last_commit_at":108,"category_tags":109,"status":67},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[110,65,64,111],"Agent","数据工具",{"id":113,"name":114,"github_repo":115,"description_zh":116,"stars":117,"difficulty_score":107,"last_commit_at":118,"category_tags":119,"status":67},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[65,64,110],{"id":121,"name":122,"github_repo":123,"description_zh":124,"stars":125,"difficulty_score":66,"last_commit_at":126,"category_tags":127,"status":67},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",147882,"2026-04-09T11:32:47",[65,110,128],"语言模型",{"id":130,"name":131,"github_repo":132,"description_zh":133,"stars":134,"difficulty_score":66,"last_commit_at":135,"category_tags":136,"status":67},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[65,64,110],{"id":138,"name":139,"github_repo":140,"description_zh":141,"stars":142,"difficulty_score":66,"last_commit_at":143,"category_tags":144,"status":67},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[145,65],"插件",{"id":147,"name":148,"github_repo":149,"description_zh":150,"stars":151,"difficulty_score":107,"last_commit_at":152,"category_tags":153,"status":67},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[128,64,110,65]]