[Paper] [引用] [剪輯Colab] [可口可樂]
歡迎使用OpenAI剪輯的開源實施(對比語言圖像預訓練)。
使用此代碼庫,我們在各種數據源和計算預算上培訓了幾個模型,從小型實驗到較大的運行範圍,包括在LAION-400M,LAION-2B和DATACOMP-1B等數據集中訓練的型號。我們的許多模型及其縮放屬性在論文可再現的縮放定律中進行了詳細研究,以進行對比的語言圖像學習。我們已經訓練過的一些最佳型號及其零照片ImaTEnet-1k精度以及由OpenAI和其他最先進的開源替代方案訓練的VIT-L模型(所有這些都可以通過OpenCLIP加載)。我們在此處提供了有關我們完整的預算模型集合的更多詳細信息,並在此處提供38個數據集的零攝像結果。
| 模型 | 培訓數據 | 解決 | 看到的樣本# | ImageNet零射擊ACC。 |
|---|---|---|---|---|
| convnext-base | Laion-2B | 256px | 13b | 71.5% |
| Convnext-large | Laion-2B | 320px | 29b | 76.9% |
| convnext-xxlarge | Laion-2B | 256px | 34B | 79.5% |
| VIT-B/32 | Datacomp-1b | 256px | 34B | 72.8% |
| VIT-B/16 | Datacomp-1b | 224px | 13b | 73.5% |
| VIT-L/14 | Laion-2B | 224px | 32B | 75.3% |
| VIT-H/14 | Laion-2B | 224px | 32B | 78.0% |
| VIT-L/14 | Datacomp-1b | 224px | 13b | 79.2% |
| VIT-G/14 | Laion-2B | 224px | 34B | 80.1% |
| VIT-L/14(原始剪輯) | 機智 | 224px | 13b | 75.5% |
| VIT-SO400M/14(siglip) | 威布利 | 224px | 45B | 82.0% |
| VIT-SO400M-14-SIGLIP-384(siglip) | 威布利 | 384px | 45B | 83.1% |
| VIT-H/14 Quickgelu(DFN) | DFN-5B | 224px | 39b | 83.4% |
| VIT-H-14-378-Quickgelu(DFN) | DFN-5B | 378px | 44b | 84.4% |
帶有其他型號的模型卡可以在OpenClip庫標籤下的擁抱面中心上找到:https://huggingface.co/models? library = open_clip。
如果您發現此存儲庫有用,請考慮引用。如果您還有其他請求或建議,我們歡迎任何人提交問題或發送電子郵件。
請注意, src/open_clip/建模和令牌代碼的部分是OpenAI官方存儲庫的改編。
| 圖片來源:https://github.com/openai/clip |
pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' )
model . eval () # model in train mode by default, impacts some models with BatchNorm or stochastic depth active
tokenizer = open_clip . get_tokenizer ( 'ViT-B-32' )
image = preprocess ( Image . open ( "docs/CLIP.png" )). unsqueeze ( 0 )
text = tokenizer ([ "a diagram" , "a dog" , "a cat" ])
with torch . no_grad (), torch . cuda . amp . autocast ():
image_features = model . encode_image ( image )
text_features = model . encode_text ( text )
image_features /= image_features . norm ( dim = - 1 , keepdim = True )
text_features /= text_features . norm ( dim = - 1 , keepdim = True )
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( "Label probs:" , text_probs ) # prints: [[1., 0., 0.]]另請參閱此[剪輯colab]。
為了有效地計算數十億個嵌入,您可以使用具有OpenCLIP支持的夾子返回。
我們提供了一個簡單的模型接口,以實例化預訓練和未經訓練的模型。要查看可以使用哪些預告片的型號,請使用以下代碼段。有關我們審慎模型的更多詳細信息,請參見此處。
> >> import open_clip
> >> open_clip . list_pretrained ()您可以在此表中找到有關我們支持的模型(例如參數,flops的數量)的更多信息。
注意:許多現有檢查點都使用原始OpenAI型號的QuickGelu激活。在最近版本的Pytorch中,這種激活實際上不如天然Torch.nn.gelu效率。現在,模型默認值為nn.gelu,因此應該將模型定義與-quickgelu Postfix一起進行openclip預處理的權重。所有OpenAi預估計的權重始終將默認為QuickGelu。一個人還可以使用QuickGelu進行驗證的權重的非-quickgelu模型定義,但精確度可能會降低,以便進行微調,這可能會消失。未來訓練的模型將使用nn.gelu。
可以使用open_clip.create_model_and_transforms加載模型,如下示例所示。模型名稱和相應的pretrained密鑰與open_clip.list_pretrained()的輸出兼容。
pretrained論點還接受本地路徑,例如/path/to/my/b32.pt 。您也可以通過這種方式從擁抱面加載檢查點。為此,下載open_clip_pytorch_model.bin文件(例如,https://huggingface.co/laion/clip-vit-l-14-datacomp.xl-s13b-b90k/tree/main),並使用pretrained=/path/to/open_clip_pytorch_model.bin 。
# pretrained also accepts local paths
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' ) 該存儲庫專注於培訓剪輯模型。要在下游分類任務(例如ImageNet)上微調訓練有素的零拍模型,請參閱我們的其他存儲庫:Wise-ft。 Wise-FT存儲庫包含有關我們論文的代碼,涉及零擊模型的穩健微調,在該模型中,我們引入了一種用於微調零拍模型的技術,同時保留了分配偏移的魯棒性。
要將數據集作為WebDataSet下載,我們建議IMG2DataSet。
請參閱CC3M IMG2DATASET示例。
除了通過上述CSV文件指定培訓數據外,我們的代碼庫還支持WebDataSet,該WebDataSet建議用於大型數據集。預期格式是一系列.tar文件。這些.tar文件中的每個文件都應包含每個培訓示例的兩個文件,一個用於圖像,一個用於相應的文本。這兩個文件都應具有相同的名稱,但分機不同。例如, shard_001.tar可以包含諸如abc.jpg和abc.txt之類的文件。您可以在https://github.com/webdataset/webdataset上了解有關webdataset更多信息。我們使用.tar文件,每個文件都有1,000個數據點,我們使用TARP創建。
您可以從Multimedia Commons下載YFCC數據集。與OpenAI類似,我們使用YFCC的一部分來達到上述精度數字。該子集中的圖像索引在OpenAI的剪輯存儲庫中。
我們建議您首先創建一個虛擬環境:
python3 -m venv .env
source .env/bin/activate
pip install -U pip
然後,您可以安裝OpenCLIP進行培訓,以pip install 'open_clip_torch[training]' 。
如果您想更改貢獻代碼,則可以克隆OpenClip,然後在OpenClip文件夾中運行make install (創建VirtualEnv之後)
按照https://pytorch.org/get-started/locally/安裝pip pytorch
您可以運行make install-training以安裝訓練DEPS
可以使用make install-test進行測試,然後make test
python -m pytest -x -s -v tests -k "training"以運行特定測試
針對特定的git修訂或標籤進行回歸測試:
生成測試數據
python tests/util_test.py --model RN50 RN101 --save_model_list models.txt --git_revision 9d31b2ec4df6d8228f370ff20c8267ec6ba39383警告:這將調用git並修改您的工作樹,但在生成數據後將其重置為當前狀態!
在以這種方式生成測試數據時,請勿修改工作樹。
運行回歸測試
OPEN_CLIP_TEST_REG_MODELS=models.txt python -m pytest -x -s -v -m regression_testpython -m open_clip_train.main
--save-frequency 1
--zeroshot-frequency 1
--report-to tensorboard
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--csv-img-key filepath
--csv-caption-key title
--imagenet-val=/path/to/imagenet/root/val/
--warmup 10000
--batch-size=128
--lr=1e-3
--wd=0.1
--epochs=30
--workers=8
--model RN50注意: imagenet-val是用於零射門評估的ImageNet驗證集的途徑,而不是訓練集!如果您不想在整個培訓中對ImageNet進行零射門評估,則可以刪除此參數。請注意, val文件夾應包含子文件夾。如果沒有,請使用此腳本。
該代碼經過了最多1024 A100的戰鬥測試,並提供了各種用於分佈式培訓的解決方案。我們包括對Slurm簇的本機支持。
隨著用於訓練的設備的數量增加,logit矩陣的空間複雜性也增加。使用幼稚的全採集方案,空間複雜性將為O(n^2) 。取而代之的是,如果使用旗幟--gather-with-grad和--local-loss的標誌,複雜性可能會有效地線性。這種變化導致一對一的數值結果作為幼稚的方法。
對於較大的數據集(例如LAION2B),我們建議將徵用--train-num-samples低於整個時期的值,例如, --train-num-samples 135646078至1/16的時代,以與--dataset-resampled一起使用以下方式進行採樣。這允許具有頻繁的檢查點可以更頻繁地評估。
最近的研究表明,可以將視覺令牌的一半到四分之三的輟學,導致高達2-3倍的訓練速度而不會損失準確性。
您可以使用鍵patch_dropout在Visual Transformer配置上設置此此設置。
在紙上,他們還沒有在末尾沒有補丁掉落的情況。您可以使用命令行的參數--force-patch-dropout 0.
OpenCLIP通過使用::將不同的數據路徑分開,使用多個數據源支持。例如,要在CC12M和Laion上--train-data "/data/cc12m/cc12m-train-{0000..2175}.tar::/data/LAION-400M/{00000..41455}.tar" 。對於這些情況,建議使用--dataset-resampled 。
默認情況下,按期望,該模型將看到每個源的樣本與源大小成正比。例如,當對一個尺寸為400m和一個具有10m尺寸的數據源進行訓練時,從第一個來源的樣本中可以看到40倍的可能性。
我們還通過使用--train-data-upsampling-factors標誌來支持數據源的不同權重。例如,在上面的情況下,使用--train-data-upsampling-factors=1::1等效於不使用標誌,而--train-data-upsampling-factors=1::2等於等於上採樣第二個數據源。如果要從具有相同頻率的數據源進行採樣,則UPSMPLING因子應與數據源的大小成反比。例如,如果數據集A具有1000個示例,並且數據集B有100個樣本,則可以使用--train-data-upsampling-factors=0.001::0.01 (或類似地, --train-data-upsampling-factors=1::10 )。
我們利用torchrun推出分佈式作業。以下在4個GPU的節點上啟動了A工作:
cd open_clip/src
torchrun --nproc_per_node 4 -m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/上面相同的腳本可以正常工作,只要用戶包括有關節點和主機節點的信息。
cd open_clip/src
torchrun --nproc_per_node=4
--rdzv_endpoint= $HOSTE_NODE_ADDR
-m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/這可能是最容易使用的解決方案。以下腳本用於培訓我們最大的模型:
#! /bin/bash -x
# SBATCH --nodes=32
# SBATCH --gres=gpu:4
# SBATCH --ntasks-per-node=4
# SBATCH --cpus-per-task=6
# SBATCH --wait-all-nodes=1
# SBATCH --job-name=open_clip
# SBATCH --account=ACCOUNT_NAME
# SBATCH --partition PARTITION_NAME
eval " $( /path/to/conda/bin/conda shell.bash hook ) " # init conda
conda activate open_clip
export CUDA_VISIBLE_DEVICES=0,1,2,3
export MASTER_PORT=12802
master_addr= $( scontrol show hostnames " $SLURM_JOB_NODELIST " | head -n 1 )
export MASTER_ADDR= $master_addr
cd /shared/open_clip
export PYTHONPATH= " $PYTHONPATH : $PWD /src "
srun --cpu_bind=v --accel-bind=gn python -u src/open_clip_train/main.py
--save-frequency 1
--report-to tensorboard
--train-data= " /data/LAION-400M/{00000..41455}.tar "
--warmup 2000
--batch-size=256
--epochs=32
--workers=8
--model ViT-B-32
--name " ViT-B-32-Vanilla "
--seed 0
--local-loss
--gather-with-gradpython -m open_clip_train.main
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--resume /path/to/checkpoints/epoch_K.pt訓練可口可樂模型是通過使用訓練腳本的--model參數來指定可口可樂配置的。當前可用的配置為“ COCA_BASE”,“ COCA_VIT-B-32”和“ COCA_ROBERTA-VIT-B-32”(使用Roberta作為文本編碼)。可口配置與夾式配置不同,因為它們具有另一個“多模式_CFG”組件,該組件指定了多模式文本解碼器的參數。這是COCA_VIT-B-32配置的一個示例:
"multimodal_cfg" : {
"context_length" : 76 ,
"vocab_size" : 49408 ,
"width" : 512 ,
"heads" : 8 ,
"layers" : 12 ,
"latent_dim" : 512 ,
"attn_pooler_heads" : 8
}歸功於Lucidrains的初始代碼,GPUCCE將代碼調整為Open_Clip,以及IEJMAC以訓練模型。
import open_clip
import torch
from PIL import Image
model , _ , transform = open_clip . create_model_and_transforms (
model_name = "coca_ViT-L-14" ,
pretrained = "mscoco_finetuned_laion2B-s13B-b90k"
)
im = Image . open ( "cat.jpg" ). convert ( "RGB" )
im = transform ( im ). unsqueeze ( 0 )
with torch . no_grad (), torch . cuda . amp . autocast ():
generated = model . generate ( im )
print ( open_clip . decode ( generated [ 0 ]). split ( "<end_of_text>" )[ 0 ]. replace ( "<start_of_text>" , "" ))另請參閱此[可口可樂]
要在Mscoco上微調可口可樂,首先創建數據集,一種方法是使用CSVDATASET,也許最簡單的方法是使用clip_benchmark,而clip_benchmark又使用pycocotools(也可以本身也可以使用)。
from clip_benchmark . datasets . builder import build_dataset
import pandas as pd
import os
root_path = "path/to/data/dir" # set this to smth meaningful
ds = build_dataset ( "mscoco_captions" , root = root_path , split = "train" , task = "captioning" ) # this downloads the dataset if it is not there already
coco = ds . coco
imgs = coco . loadImgs ( coco . getImgIds ())
future_df = { "filepath" :[], "title" :[]}
for img in imgs :
caps = coco . imgToAnns [ img [ "id" ]]
for cap in caps :
future_df [ "filepath" ]. append ( img [ "file_name" ])
future_df [ "title" ]. append ( cap [ "caption" ])
pd . DataFrame . from_dict ( future_df ). to_csv (
os . path . join ( root_path , "train2014.csv" ), index = False , sep = " t "
)這應該創建一個CSV數據集,可以使用open_clip來微調可可
python -m open_clip_train.main
--dataset-type " csv "
--train-data " path/to/data/dir/train2014.csv "
--warmup 1000
--batch-size 128
--lr 1e-5
--wd 0.1
--epochs 1
--workers 3
--model " coca_ViT-L-14 "
--report-to " wandb "
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1
--log-every-n-steps 100這是一個通用設置,Open_Clip具有可以設置的非常參數, python -m open_clip_train.main --help應該顯示它們。與培訓前相比,唯一相關的更改是兩個參數
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1這使該模型僅訓練生成方面。
如果您希望使用不同的語言模型作為剪輯的文本編碼器,則可以通過在src/open_clip/model_configs中使用擁抱的面部模型配置之一,並分別將其作為tokenizer作為--model和--hf-tokenizer-name參數。目前,我們僅支持Roberta(“ Test-Roberta”配置),但是添加新型號應該是微不足道的。您還可以確定從末端開始有多少層,以使--lock-text-unlocked-layers參數離開未散發。這是一個示例命令,可以與Roberta LM一起訓練剪輯,該剪輯的最後10層未匯合:
python -m open_clip_train.main
--train-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00000..00329}.tar - "
--train-num-samples 3000000
--val-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00330..00331}.tar - "
--val-num-samples 10000
--dataset-type webdataset
--batch-size 256
--warmup 2000
--epochs 10
--lr 5e-4
--precision amp
--workers 6
--model " roberta-ViT-B-32 "
--lock-text
--lock-text-unlocked-layers 10
--name " 10_unfrozen "
--report-to " tensorboard " 當在具有8 GPU的機器上運行時,命令應為概念標題產生以下訓練曲線:
概念標題的更詳細的曲線是在/DOCS/clip_conceptual_captions.md上給出的。
當在YFCC上訓練RN50時,使用了與上述相同的超參數,除了lr=5e-4和epochs=32 。
請注意,使用另一種模型,例如ViT-B/32或RN50x4或RN50x16或ViT-B/16 ,使用--model RN50x4指定。
對於張板記錄,請運行:
tensorboard --logdir=logs/tensorboard/ --port=7777對於WandB日誌記錄,我們建議查看step變量而不是Step ,因為該代碼庫的早期版本未正確設置。對於在#613之前訓練的型號,應忽略Step變量。對於較新的運行,在該PR之後,兩個變量是相同的。
我們建議https://github.com/laion-ai/clip_benchmark#how-to-use用於系統評估40個數據集。
python -m open_clip_train.main
--val-data= " /path/to/validation_data.csv "
--model RN101
--pretrained /path/to/checkpoints/epoch_K.ptpython -m open_clip_train.main
--imagenet-val /path/to/imagenet/validation
--model ViT-B-32-quickgelu
--pretrained laion400m_e32您可以通過使用--distill-model和--distill-pretrained預先訓練,以指定要從中提取的模型。例如,從OpenAI VIT-L/14使用--distill-model ViT-L-14 --distill-pretrained openai 。
為了模擬較大的批次使用--accum-freq k 。如果按GPU --batch-size大小為m,則為m ,則有效批量大小為k * m * num_gpus 。
當增加--accum-freq默認值為1時,樣本/s將保持大致恆定(批量大小將翻倍,每批批次將增加一倍)。建議使用其他功能來降低批處理大小,例如--grad-checkpointing --local-loss --gather-with-grad之前,然後增加--accum-freq 。 --accum-freq除了這些功能外還可以使用。
現在有2個正向通行證,而不是每例示例。但是,第一個是用torch.no_grad完成的。
需要其他一些GPU內存---所有m批次的功能和數據都存儲在內存中。
也有m損失計算,而不是通常的1。
有關更多信息,請參見Cui等。 (https://arxiv.org/abs/2112.09331)或Pham等。 (https://arxiv.org/abs/2111.10050)。
我們對INT8培訓和推斷有Beta支持。您可以使用-USE-BNB --use-bnb-linear SwitchBackLinearGlobalMemEfficient --use-bnb-linear SwitchBackLinearGlobal switchbacklinearglobalmemememeffity啟用INT8培訓。有關這些層的定義,請參閱BitsandBytes庫。對於剪輯vit-nuge,目前應對應於10%的訓練速度,而準確性損失沒有。當對注意力層進行重構時,更多的加速度會加速,以便在那裡更換線性層。
請參閱教程https://github.com/mlfoundations/open_clip/blob/main/main/tutorials/int8_tutorial.ipynb或Paper。
始終可以直接從遠程文件中恢復S3存儲庫中的文件。只需設置--resume s3://<path-to-checkpoint>即可。這將與fsspec支持的任何文件系統一起使用。
也可以在連續備份S3的同時訓練open_clip型號。這可以有助於避免慢速本地文件系統。
假設您的節點具有本地SSD /scratch ,一個S3存儲桶s3://<path-to-bucket> 。
在這種情況下,set --logs /scratch和--remote-sync s3://<path-to-bucket> 。然後,一個背景過程將同步/scratch/<run-name>與s3://<path-to-bucket>/<run-name> 。同步後,背景過程將入睡--remote-sync-frequency秒,默認為5分鐘。
還提供了與其他遠程文件系統同步的實驗支持,而不僅僅是S3。為此,指定--remote-sync-protocol fsspec 。但是,目前非常慢,不建議。
另外,要選擇避免在使用這些功能時在本地保存過多的檢查點,您可以使用--delete-previous-checkpoint 。
注意:如果您將此功能與--resume latest一起使用,則會有一些警告。首先,不支持與--save-most-recent一起使用。其次,僅支持s3 。最後,由於同步發生在後台,因此最新檢查點可能無法完成與遙控器的同步。
模塊open_clip.push_to_hf_hub包括用於推動模型 /W權重的幫助者,並將配置為HF集線器。
該工具可以從命令行,例如: python -m open_clip.push_to_hf_hub --model convnext_large_d_320 --pretrained /train/checkpoints/epoch_12.pt --repo-id laion/CLIP-convnext_large_d_320.laion2B-s29B-b131K-ft
我們感謝高斯超級計算中心(www.gauss-centre.eu)通過在JülichSupercuting Center(JSC)的GCS SuperComputer Juwels Booster上通過John superComputer Juwels Booster在GCS SuperComputer Juwels Booster上提供計算時間,以資助這部分工作。
該存儲庫的當前發展由Ross Wightman,Romain Beaumont,Cade Gordon和Vaishaal Shankar領導。
該存儲庫的原始版本來自UW,Google,Stanford,Amazon,Columbia和Berkeley的一組研究人員。
Gabriel Ilharco*,Mitchell Wortsman*,Nicholas Carlini,Rohan Taori,Achal Dave,Vaishaal Shankar,John Miller,Hongseok Namkoong,Hannaneh Hajishirzi,Ali Farhadi,Ludwig Schmidt
特別感謝Jong Wook Kim和Alec Radford在復制剪輯方面的幫助!
如果您發現此存儲庫有用,請考慮引用:
@software { ilharco_gabriel_2021_5143773 ,
author = { Ilharco, Gabriel and
Wortsman, Mitchell and
Wightman, Ross and
Gordon, Cade and
Carlini, Nicholas and
Taori, Rohan and
Dave, Achal and
Shankar, Vaishaal and
Namkoong, Hongseok and
Miller, John and
Hajishirzi, Hannaneh and
Farhadi, Ali and
Schmidt, Ludwig } ,
title = { OpenCLIP } ,
month = jul,
year = 2021 ,
note = { If you use this software, please cite it as below. } ,
publisher = { Zenodo } ,
version = { 0.1 } ,
doi = { 10.5281/zenodo.5143773 } ,
url = { https://doi.org/10.5281/zenodo.5143773 }
} @inproceedings { cherti2023reproducible ,
title = { Reproducible scaling laws for contrastive language-image learning } ,
author = { Cherti, Mehdi and Beaumont, Romain and Wightman, Ross and Wortsman, Mitchell and Ilharco, Gabriel and Gordon, Cade and Schuhmann, Christoph and Schmidt, Ludwig and Jitsev, Jenia } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
pages = { 2818--2829 } ,
year = { 2023 }
} @inproceedings { Radford2021LearningTV ,
title = { Learning Transferable Visual Models From Natural Language Supervision } ,
author = { Alec Radford and Jong Wook Kim and Chris Hallacy and A. Ramesh and Gabriel Goh and Sandhini Agarwal and Girish Sastry and Amanda Askell and Pamela Mishkin and Jack Clark and Gretchen Krueger and Ilya Sutskever } ,
booktitle = { ICML } ,
year = { 2021 }
} @inproceedings { schuhmann2022laionb ,
title = { {LAION}-5B: An open large-scale dataset for training next generation image-text models } ,
author = { Christoph Schuhmann and
Romain Beaumont and
Richard Vencu and
Cade W Gordon and
Ross Wightman and
Mehdi Cherti and
Theo Coombes and
Aarush Katta and
Clayton Mullis and
Mitchell Wortsman and
Patrick Schramowski and
Srivatsa R Kundurthy and
Katherine Crowson and
Ludwig Schmidt and
Robert Kaczmarczyk and
Jenia Jitsev } ,
booktitle = { Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track } ,
year = { 2022 } ,
url = { https://openreview.net/forum?id=M3Y74vmsMcY }
}