[Kertas] [Kutipan] [Clip Colab] [Coca Colab]
Selamat datang di implementasi open source dari klip OpenAI (pra-pelatihan gambar-gambar kontras).
Dengan menggunakan basis kode ini, kami telah melatih beberapa model pada berbagai sumber data dan menghitung anggaran, mulai dari percobaan skala kecil hingga berjalan lebih besar termasuk model yang dilatih pada dataset seperti Laion-400m, Laion-2b dan Datacomp-1B. Banyak model kami dan sifat penskalaannya dipelajari secara rinci di dalam makalah yang dapat direproduksi undang-undang penskalaan untuk pembelajaran gambar bahasa yang kontras. Beberapa model terbaik yang telah kami latih dan akurasi ImageNet-1K nol-shot mereka ditunjukkan di bawah ini, bersama dengan model VIT-L yang dilatih oleh OpenAI dan alternatif open source canggih lainnya (semua dapat dimuat melalui OpenClip). Kami memberikan detail lebih lanjut tentang koleksi lengkap model pretrained kami di sini, dan hasil zero-shot untuk 38 kumpulan data di sini.
| Model | Data pelatihan | Resolusi | # sampel yang terlihat | Imagenet Zero-shot Acc. |
|---|---|---|---|---|
| Basis konvnext | 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 (klip asli) | AKAL | 224px | 13b | 75,5% |
| VIT-SO400M/14 (SIGLIP) | Webli | 224px | 45b | 82,0% |
| VIT-SO400M-14-SIGLIP-384 (SIGLIP) | Webli | 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% |
Kartu Model Dengan Detail Spesifik Model Tambahan Dapat Ditemukan di HUB HUBGING FACE DI BAWAH TAG PERPUSTAKAAN OPENCLIP: https://huggingface.co/models?library=open_clip.
Jika Anda menemukan repositori ini bermanfaat, harap pertimbangkan mengutip. Kami menyambut siapa pun untuk mengirimkan masalah atau mengirim email jika Anda memiliki permintaan atau saran lain.
Perhatikan bahwa bagian dari kode src/open_clip/ pemodelan dan tokenizer adalah adaptasi dari repositori resmi Openai.
| Kredit Gambar: 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.]]Lihat juga [Clip Colab] ini.
Untuk menghitung miliaran embedding secara efisien, Anda dapat menggunakan retrieval klip yang memiliki dukungan openclip.
Kami menawarkan antarmuka model sederhana untuk membuat instantiate model pra-terlatih dan tidak terlatih. Untuk melihat model pretrain mana yang tersedia, gunakan cuplikan kode berikut. Rincian lebih lanjut tentang model pretrained kami tersedia di sini.
> >> import open_clip
> >> open_clip . list_pretrained ()Anda dapat menemukan lebih banyak tentang model yang kami dukung (misalnya jumlah parameter, jepit) di tabel ini.
Catatan: Banyak pos pemeriksaan yang ada menggunakan aktivasi QuickGelu dari model OpenAI asli. Aktivasi ini sebenarnya kurang efisien daripada native torch.nn.gelu dalam versi terbaru Pytorch. Model default sekarang nn.gelu, jadi orang harus menggunakan definisi model dengan -quickgelu postfix untuk bobot pretrained openclip. Semua bobot pretrained Openai akan selalu default ke Quickgelu. Seseorang juga dapat menggunakan definisi model non -quickgelu dengan bobot pretrained menggunakan Quickgelu tetapi akan ada penurunan akurasi, untuk fine -tune yang kemungkinan akan hilang untuk berjalan lebih lama. Model terlatih di masa depan akan menggunakan nn.gelu.
Model dapat dimuat dengan open_clip.create_model_and_transforms , seperti yang ditunjukkan pada contoh di bawah ini. Nama model dan tombol pretrained yang sesuai kompatibel dengan output open_clip.list_pretrained() .
Argumen pretrained juga menerima jalur lokal, misalnya /path/to/my/b32.pt . Anda juga dapat memuat pos pemeriksaan dari permukaan pelukan dengan cara ini. Untuk melakukannya, unduh file open_clip_pytorch_model.bin (misalnya, https://huggingface.co/laion/clip-vit-l-14-datacomp.xl-s13b-b90k/tree/main), dan menggunakan 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' ) Repositori ini difokuskan pada model klip pelatihan. Untuk menyempurnakan model zero-shot yang terlatih pada tugas klasifikasi hilir seperti ImageNet, silakan lihat repositori kami yang lain: Wise-ft. Repositori Wise-Ft berisi kode untuk makalah kami tentang penyempurnaan model zero-shot yang kuat, di mana kami memperkenalkan teknik untuk menyempurnakan model zero-shot sambil menjaga ketahanan di bawah pergeseran distribusi.
Untuk mengunduh set data sebagai webDataSet, kami sarankan IMG2DataSet.
Lihat CC3M IMG2Dataset Contoh.
Selain menentukan data pelatihan melalui file CSV seperti yang disebutkan di atas, basis kode kami juga mendukung WebDataSet, yang direkomendasikan untuk set data skala yang lebih besar. Format yang diharapkan adalah serangkaian file .tar . Masing -masing file .tar ini harus berisi dua file untuk setiap contoh pelatihan, satu untuk gambar dan satu untuk teks yang sesuai. Kedua file harus memiliki nama yang sama tetapi ekstensi yang berbeda. Misalnya, shard_001.tar dapat berisi file seperti abc.jpg dan abc.txt . Anda dapat mempelajari lebih lanjut tentang webdataset di https://github.com/webdataset/webdataset. Kami menggunakan file .tar dengan masing -masing 1.000 titik data, yang kami buat menggunakan TARP.
Anda dapat mengunduh dataset YFCC dari Multimedia Commons. Mirip dengan Openai, kami menggunakan subset YFCC untuk mencapai angka akurasi yang disebutkan di atas. Indeks gambar dalam subset ini ada di repositori klip Openai.
Kami menyarankan Anda terlebih dahulu menciptakan lingkungan virtual dengan:
python3 -m venv .env
source .env/bin/activate
pip install -U pip
Anda kemudian dapat menginstal OpenClip untuk pelatihan dengan pip install 'open_clip_torch[training]' .
Jika Anda ingin membuat perubahan untuk berkontribusi kode, Anda dapat mengkloning openclip, lalu jalankan, make install di folder openclip (setelah membuat virtualEnv)
Instal Pip Pytorch sesuai https://pytorch.org/get-started/locally/
Anda dapat menjalankan make install-training untuk menginstal pelatihan deps
Tes dapat dijalankan dengan make install-test kemudian make test
python -m pytest -x -s -v tests -k "training" untuk menjalankan tes tertentu
Menjalankan tes regresi terhadap revisi atau tag git spesifik:
Menghasilkan data pengujian
python tests/util_test.py --model RN50 RN101 --save_model_list models.txt --git_revision 9d31b2ec4df6d8228f370ff20c8267ec6ba39383 PERINGATAN : Ini akan memohon git dan memodifikasi pohon kerja Anda, tetapi akan mengatur ulang ke keadaan saat ini setelah data telah dihasilkan!
Jangan memodifikasi pohon kerja Anda saat data uji sedang dihasilkan dengan cara ini.
Jalankan tes regresi
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 Catatan: imagenet-val adalah jalur ke set validasi Imagenet untuk evaluasi nol-shot, bukan set pelatihan! Anda dapat menghapus argumen ini jika Anda tidak ingin melakukan evaluasi zero-shot di Imagenet selama pelatihan. Perhatikan bahwa folder val harus berisi subfolder. Jika tidak, silakan gunakan skrip ini.
Kode ini telah diuji pertempuran hingga 1024 A100 dan menawarkan berbagai solusi untuk pelatihan terdistribusi. Kami menyertakan dukungan asli untuk cluster slurm.
Karena jumlah perangkat yang digunakan untuk melatih meningkat, demikian juga kompleksitas ruang dari matriks logit. Menggunakan skema semua-kandang naif, kompleksitas ruang akan menjadi O(n^2) . Sebaliknya, kompleksitas dapat menjadi linier secara efektif jika bendera --gather-with-grad dan --local-loss digunakan. Perubahan ini menghasilkan hasil numerik satu-ke-satu sebagai metode naif.
Untuk kumpulan data yang lebih besar (misalnya laion2b), kami merekomendasikan pengaturan --train-num-samples ke nilai lebih rendah dari zaman penuh, misalnya --train-num-samples 135646078 hingga 1/16 dari zaman dalam hubungannya dengan --dataset-resampled untuk melakukan pengambilan sampel dengan penggantian. Ini memungkinkan pos pemeriksaan yang sering untuk mengevaluasi lebih sering.
Penelitian terbaru telah menunjukkan bahwa seseorang dapat menjatuhkan setengah hingga tiga perempat dari token visual, yang mengarah ke kecepatan pelatihan hingga 2-3x tanpa kehilangan akurasi.
Anda dapat mengatur ini pada konfigurasi transformator visual Anda dengan kunci patch_dropout .
Di koran, mereka juga finetuned tanpa dropout patch di akhir. Anda dapat melakukan ini dengan argumen baris perintah --force-patch-dropout 0.
OpenClip mendukung menggunakan beberapa sumber data, dengan memisahkan jalur data yang berbeda dengan :: . Misalnya, untuk berlatih di CC12M dan di Laion, orang mungkin menggunakan --train-data "/data/cc12m/cc12m-train-{0000..2175}.tar::/data/LAION-400M/{00000..41455}.tar" . Menggunakan --dataset-resampled direkomendasikan untuk kasus ini.
Secara default, pada ekspektasi jumlah kali model akan melihat sampel dari masing -masing sumber sebanding dengan ukuran sumber. Misalnya, ketika pelatihan pada satu sumber data dengan ukuran 400m dan satu dengan ukuran 10m, sampel dari sumber pertama 40x lebih mungkin terlihat dalam harapan.
Kami juga mendukung bobot yang berbeda dari sumber data, dengan menggunakan bendera --train-data-upsampling-factors . Misalnya, menggunakan --train-data-upsampling-factors=1::1 dalam skenario di atas setara dengan tidak menggunakan bendera, dan --train-data-upsampling-factors=1::2 setara dengan meningkatkan sumber data kedua dua kali. Jika Anda ingin mencicipi dari sumber data dengan frekuensi yang sama, faktor peningkatan harus berbanding terbalik dengan ukuran sumber data. Misalnya, jika dataset A memiliki 1000 sampel dan dataset B memiliki 100 sampel, Anda dapat menggunakan --train-data-upsampling-factors=0.001::0.01 (atau analog, --train-data-upsampling-factors=1::10 ).
Kami menggunakan torchrun untuk meluncurkan pekerjaan terdistribusi. Berikut ini meluncurkan pekerjaan A pada simpul 4 GPU:
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/Skrip yang sama di atas berfungsi, selama pengguna menyertakan informasi tentang jumlah node dan node host.
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/Ini kemungkinan solusi termudah untuk digunakan. Skrip berikut digunakan untuk melatih model terbesar kami:
#! /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 Pelatihan Model Coca diaktifkan melalui menentukan konfigurasi Coca menggunakan parameter --model skrip pelatihan. Konfigurasi yang tersedia saat ini adalah "Coca_Base", "Coca_vit-B-32", dan "Coca_roberta-Vit-B-32" (yang menggunakan Roberta sebagai encoder teks). Konfigurasi Coca berbeda dari konfigurasi klip karena mereka memiliki komponen "multimodal_cfg" tambahan yang menentukan parameter untuk dekoder teks multimodal. Berikut adalah contoh dari konfigurasi 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
}Kredit ke Lucidrains untuk kode awal, GPUCCE untuk mengadaptasi kode ke Open_Clip, dan IEJMAC untuk melatih model.
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>" , "" ))Lihat juga ini [Coca Colab]
Untuk menyempurnakan Coca di MSCOCO, pertama-tama buat dataset, salah satu cara menggunakan CSVDataSet dan mungkin cara paling sederhana untuk melakukannya adalah menggunakan Clip_Benchmark yang pada gilirannya menggunakan pycocotools (yang dapat digunakan juga dengan sendirinya).
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 "
)Ini harus membuat dataset CSV yang dapat digunakan untuk menyempurnakan koka dengan 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 Ini adalah pengaturan umum, open_clip memiliki parameter yang sangat dapat diatur, python -m open_clip_train.main --help harus menunjukkannya. Satu-satunya perubahan yang relevan dibandingkan dengan pra-pelatihan adalah dua argumen
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1yang membuat model hanya melatih sisi generatif.
Jika Anda ingin menggunakan model bahasa yang berbeda sebagai encoder teks untuk klip, Anda dapat melakukannya dengan menggunakan salah satu konfigurasi model pemeluk wajah di src/open_clip/model_configs dan meneruskannya sebagai tokenizer sebagai parameter --model --hf-tokenizer-name masing-masing. Saat ini kami hanya mendukung Roberta (konfigurasi "Test-Roberta"), namun menambahkan model baru harus sepele. Anda juga dapat menentukan berapa banyak lapisan, dari akhir, untuk membiarkan tidak beku dengan parameter --lock-text-unlocked-layers . Berikut adalah contoh perintah untuk melatih klip dengan Roberta LM yang memiliki 10 lapisan terakhir yang dibuka:
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 " Saat dijalankan pada mesin dengan 8 GPU Perintah harus menghasilkan kurva pelatihan berikut untuk keterangan konseptual:
Kurva yang lebih rinci untuk keterangan konseptual diberikan di /docs/clip_conceptual_captions.md.
Saat melatih RN50 pada YFCC, hiperparameter yang sama seperti di atas digunakan, dengan pengecualian lr=5e-4 dan epochs=32 .
Perhatikan bahwa untuk menggunakan model lain, seperti ViT-B/32 atau RN50x4 atau RN50x16 atau ViT-B/16 , tentukan dengan --model RN50x4 .
Untuk penebangan Tensorboard, jalankan:
tensorboard --logdir=logs/tensorboard/ --port=7777 Untuk penebangan wandb, kami sarankan melihat variabel step alih -alih Step , karena kemudian tidak diatur dengan benar dalam versi sebelumnya dari basis kode ini. Untuk lari yang lebih lama dengan model yang dilatih sebelum #613, variabel Step harus diabaikan. Untuk lari yang lebih baru, setelah PR itu, kedua variabelnya sama.
Kami merekomendasikan https://github.com/laion-ai/clip_benchmark#how-to-use untuk evaluasi sistematis pada 40 dataset.
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 Anda dapat menyuling dari pra-terlatih dengan menggunakan --distill-model dan --distill-pretrained untuk menentukan model yang ingin Anda suling. Misalnya, untuk menyaring dari OpenAi Vit-L/14 Penggunaan --distill-model ViT-L-14 --distill-pretrained openai .
Untuk mensimulasikan penggunaan batch yang lebih besar --accum-freq k . Jika per gpu ukuran batch, --batch-size , adalah m , maka ukuran batch efektif adalah k * m * num_gpus .
Saat meningkatkan --accum-freq dari default 1, sampel/s akan tetap kira-kira konstan (ukuran batch akan berlipat ganda, seperti waktu-per-batch). Disarankan untuk menggunakan fitur lain untuk mengurangi ukuran batch seperti --grad-checkpointing --local-loss --gather-with-grad sebelum meningkatkan --accum-freq . --accum-freq dapat digunakan sebagai tambahan untuk fitur-fitur ini.
Alih-alih 1 umpan maju per contoh, sekarang ada 2 lintasan ke depan per-contoh. Namun, yang pertama dilakukan dengan torch.no_grad .
Ada beberapa memori GPU tambahan yang diperlukan --- fitur dan data dari semua batch m disimpan dalam memori.
Ada juga perhitungan kehilangan m , bukan yang biasa 1.
Untuk informasi lebih lanjut, lihat Cui et al. (https://arxiv.org/abs/2112.09331) atau Pham et al. (https://arxiv.org/abs/2111.10050).
Kami memiliki dukungan beta untuk pelatihan dan inferensi INT8. Anda dapat mengaktifkan pelatihan int8 dengan --use-bnb-linear SwitchBackLinearGlobal atau --use-bnb-linear SwitchBackLinearGlobalMemEfficient . Silakan lihat Perpustakaan Bitsandbytes untuk definisi untuk lapisan -lapisan ini. Untuk clip vit-huge saat ini harus sesuai dengan speedup pelatihan 10% tanpa kehilangan akurasi. Lebih banyak speedup datang ketika lapisan perhatian direfaktor sehingga linier lapisan pria juga diganti di sana.
Lihat tutorial https://github.com/mlfoundations/open_clip/blob/main/tutorials/int8_tutorial.ipynb atau kertas.
Selalu mungkin untuk melanjutkan langsung dari file jarak jauh, misalnya, file dalam ember S3. Cukup atur --resume s3://<path-to-checkpoint> . Ini akan berfungsi dengan sistem file apa pun yang didukung oleh fsspec .
Dimungkinkan juga untuk melatih model open_clip sambil terus mendukung hingga S3. Ini dapat membantu menghindari sistem file lokal yang lambat.
Katakan bahwa simpul Anda memiliki SSD /scratch lokal, S3 Bucket s3://<path-to-bucket> .
Dalam hal ini, atur --logs /scratch dan --remote-sync s3://<path-to-bucket> . Kemudian, proses latar belakang akan menyinkronkan /scratch/<run-name> ke s3://<path-to-bucket>/<run-name> . Setelah menyinkronkan, proses latar belakang akan tidur untuk --remote-sync-frequency detik, yang default hingga 5 menit.
Ada juga dukungan eksperimental untuk menyinkronkan ke sistem file jarak jauh lainnya, bukan hanya S3. Untuk melakukannya, tentukan --remote-sync-protocol fsspec . Namun, saat ini sangat lambat dan tidak disarankan.
Selain itu, untuk menghindari menghemat terlalu banyak pos pemeriksaan secara lokal saat menggunakan fitur-fitur ini, Anda dapat menggunakan --delete-previous-checkpoint yang menghapus pos pemeriksaan sebelumnya setelah menyimpan yang baru.
Catatan: Jika Anda menggunakan fitur ini dengan --resume latest , ada beberapa peringatan. Pertama, gunakan dengan --save-most-recent tidak didukung. Kedua, hanya s3 yang didukung. Akhirnya, karena sinkronisasi terjadi di latar belakang, ada kemungkinan bahwa pos pemeriksaan terbaru mungkin belum selesai disinkronkan ke remote.
Modul open_clip.push_to_hf_hub mencakup pembantu untuk mendorong model /W bobot dan konfigurasi ke hub HF.
Alat ini dapat dijalankan dari baris perintah, mis: 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
Kami berterima kasih kepada Pusat Gauss untuk Supercomputing EV (www.gauss-centre.eu) untuk mendanai bagian pekerjaan ini dengan menyediakan waktu komputasi melalui John von Neumann Institute for Computing (NIC) pada superkomputer GCS Juwels Booster di Jülich Supercomputing Center (JSC).
Perkembangan saat ini dari repositori ini dipimpin oleh Ross Wightman, Romain Beaumont, Cade Gordon, dan Vaishaal Shankar.
Versi asli repositori ini adalah dari sekelompok peneliti di UW, Google, Stanford, Amazon, Columbia, dan Berkeley.
Gabriel Ilharco*, Mitchell Wortsman*, Nicholas Carlini, Rohan Taori, Achal Dave, Vaishaal Shankar, John Miller, Hongseok Namkoong, Hananeh Hajishirzi, Ali Farhadi, Ludwig Schmidt, Hajishirzi, Ali Farhadi, Ludwig Schmidttttt
Terima kasih khusus kepada Jong Wook Kim dan Alec Radford untuk bantuan dengan klip mereproduksi!
Jika Anda menemukan repositori ini bermanfaat, harap pertimbangkan mengutip:
@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 }
}