🚀 TiC-CLIP-bestpool-cumulative模型卡片
本倉庫包含基於TiC-DataComp-Yearly(xlarge,最佳池過濾)數據集訓練的TiC-CLIP模型,使用了2014年至2022年的數據,並藉助我們改進後的OpenCLIP代碼進行訓練。如需更多信息,請參考我們的GitHub倉庫。
📚 詳細文檔
模型描述
保持大型基礎模型與最新數據同步本質上成本高昂。為避免持續重新訓練帶來的高昂成本,持續訓練這些模型勢在必行。而缺乏大規模的持續學習基準或基線,使這一問題更加嚴峻。
我們推出了第一套網絡規模的時間連續(TiC)基準,用於訓練視覺語言模型:TiC-DataComp、TiC-YFCC和TiC-Redcaps。其中,TiC-DataComp是我們最大的數據集,包含超過127億個帶時間戳的圖像-文本對,時間跨度為9年(2014 - 2022年)。
我們首先利用這些基準進行各種動態評估,以衡量現有模型的時間魯棒性。結果顯示,與OpenCLIP倉庫中最近訓練的模型相比,OpenAI的CLIP(基於2020年以前的數據訓練)在我們精心設計的2021 - 2022年檢索任務中,零樣本準確率下降了約8%。
隨後,我們研究瞭如何在時間連續的數據上高效訓練模型。我們證明,一種基於簡單排練的方法(即從最後一個檢查點繼續訓練並回放舊數據)與從頭開始重新訓練的標準做法相比,可將計算量減少2.5倍。相關代碼可在此鏈接獲取。
模型來源
- 倉庫:ml-tic-clip GitHub倉庫
- 論文:TiC-CLIP: Continual Training of CLIP Models, Garg, S., Farajtabar, M., Pouransari, H., Vemulapalli, R., Mehta, S., Tuzel, O., Shankar, V. and Faghri, F., International Conference on Learning Representations (ICLR), 2024.
🎯 用途
研究人員可以使用TiC-CLIP預訓練模型,從預訓練檢查點開始,在次年或次月的數據上繼續訓練,從而更快地設計持續學習方法。
🚀 快速開始
這些模型與DataComp評估套件以及我們為TiC-DataComp-Retrieval和TiC-DataCompNet評估而修改的DataComp版本兼容。模型還可用於恢復訓練或作為使用OpenCLIP代碼進行新訓練的初始化。
請按照我們GitHub倉庫中的說明創建評估集,或按照DataComp的說明對38個數據集進行標準評估。
以下代碼片段假設TiC-DataComp數據已準備好,並遵循了GitHub倉庫中的說明。
💻 使用示例
基礎用法
YEAR=2016
REPO="apple/TiC-CLIP-bestpool-cumulative"
huggingface-cli download $REPO checkpoints/$YEAR.pt
pushd datacomp
final_data_dir=$TIC_DATACOMP_Y_PATH/train/$YEAR/
torchrun --nproc_per_node 8 --nnodes 1 \
train.py \
--scale "tic_medium" \
--dataset_resampled \
--data_dir $final_data_dir \
--output_dir "./results/" \
--exp_name "datacomp_medium-basic_cumulative" \
--imagenet_val $IMAGENET_VAL_PATH \
--save_frequency 1 \
--resume
popd
高級用法
pushd datacomp
python ../dataset_creation/tic-datacomp/generate_tasklist.py --yaml-path tasklist.yml --sample-eval --eval-tasks retrieval/yearly,datacompnet/yearly
python evaluate.py --data_dir data/ --train_output_dir ./results --use_model "ViT-B-16 $YEAR.pt" --skip_hf --skip_db --skip_notification
OpenCLIP加載和推理示例
import open_clip
from huggingface_hub import hf_hub_download
filename = hf_hub_download(repo_id="apple/TiC-CLIP-bestpool-cumulative", filename="checkpoints/2016.pt")
model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-16', filename)
tokenizer = open_clip.get_tokenizer('ViT-B-16')
image = preprocess(Image.open("image.png").convert('RGB')).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)
🔧 技術細節
訓練數據
請參考TiC-DataComp。
訓練過程
請參考我們TiC-CLIP論文的第2 - 3節。
📄 許可證
本模型使用自定義蘋果許可證,詳情請見LICENSE。
📖 引用
TiC-CLIP: Continual Training of CLIP Models. (ICLR 2024)
Garg, S., Farajtabar, M., Pouransari, H., Vemulapalli, R., Mehta, S., Tuzel, O., Shankar, V. and Faghri, F..
@inproceedings{garg2024tic,
title={TiC-CLIP: Continual Training of CLIP Models},
author={Garg, Saurabh and Farajtabar, Mehrdad and Pouransari, Hadi and Vemulapalli, Raviteja and Mehta, Sachin and Tuzel, Oncel and Shankar, Vaishaal and Faghri, Fartash},
booktitle={The Twelfth International Conference on Learning Representations (ICLR)},
year={2024},
url={https://openreview.net/forum?id=TLADT8Wrhn}
}
屬性 |
詳情 |
模型類型 |
TiC-CLIP |
訓練數據 |
apple/TiC-DataComp |