Youku-mPLUG : un ensemble de données et de références de pré-formation en langue vidéo chinoise à grande échelle de 10 millions de personnes, lien de téléchargement ICI
Papier
Nous publions le plus grand ensemble de données en langage vidéo chinois de haute qualité (10 millions), nommé Youku-mPLUG , qui est collecté à partir d'un site Web chinois de partage de vidéos bien connu, nommé Youku, avec des critères stricts de sécurité, de diversité et de qualité.
Exemples de clips vidéo et de titres dans l'ensemble de données Youku-mPLUG proposé.
Nous fournissons 3 ensembles de données de référence vidéo multimodales en aval différents pour mesurer les capacités des modèles pré-entraînés. Les 3 tâches différentes comprennent :
L'ensemble de données contient 10 millions de vidéos au total, de haute qualité et réparties dans 20 super catégories et 45 catégories.
La distribution des catégories dans l'ensemble de données Youku-mPLUG.
Vous pouvez télécharger toutes les vidéos et fichiers d'annotation via ce lien
Remarque : En raison d'un bug dans megatron_util, après avoir installé megatron_util, il est nécessaire de remplacer conda/envs/youku/lib/python3.10/site-packages/megatron_util/initialize.py par initialize.py dans le répertoire courant.
conda env create -f environment.yml
conda activate youku
pip install megatron_util==1.3.0 -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
# For caption evaluation
apt-get install default-jre
Vous devez d’abord télécharger le point de contrôle GPT-3 1.3B et 2.7B à partir de Modelscope. Le modèle pré-entraîné peut être téléchargé ici (1.3B) et ici (2.7B).
Exécution de la pré-formation de mPLUG-Video en tant que :
exp_name = 'pretrain/gpt3_1.3B/pretrain_gpt3_freezeGPT_youku_v0'
PYTHONPATH = $ PYTHONPATH :. /
python - m torch . distributed . launch - - nproc_per_node = 8 - - master_addr = $ MASTER_ADDR
- - master_port = $ MASTER_PORT
- - nnodes = $ WORLD_SIZE
- - node_rank = $ RANK
- - use_env run_pretrain_distributed_gpt3 . py
- - config . / configs / ${ exp_name }. yaml
- - output_dir . / output / ${ exp_name }
- - enable_deepspeed
- - bf16
2 > & 1 | tee . / output / ${ exp_name } / train . log
Pour effectuer un réglage fin en aval. Nous prenons la prédiction de catégorie vidéo comme exemple :
exp_name = 'cls/cls_gpt3_1.3B_youku_v0_sharp_2'
PYTHONPATH = $ PYTHONPATH :. /
python - m torch . distributed . launch - - nproc_per_node = 8 - - master_addr = $ MASTER_ADDR
- - master_port = $ MASTER_PORT
- - nnodes = $ WORLD_SIZE
- - node_rank = $ RANK
- - use_env downstream / run_cls_distributed_gpt3 . py
- - config . / configs / ${ exp_name }. yaml
- - output_dir . / output / ${ exp_name }
- - enable_deepspeed
- - resume path / to / 1_3 B_mp_rank_00_model_states . pt
- - bf16
2 > & 1 | tee . / output / ${ exp_name } / train . log
Ci-dessous, nous montrons les résultats sur les ensembles de validation pour référence.
Nous construisons le modèle mPLUG-Video basé sur mPLUG-Owl. Pour utiliser le modèle, vous devez d'abord cloner le dépôt mPLUG-Owl en tant que
git clone https://github.com/X-PLUG/mPLUG-Owl.git
cd mPLUG-Owl/mPLUG-Owl
Le point de contrôle adapté aux instructions est disponible sur HuggingFace. Pour affiner le modèle, vous pouvez vous référer à mPLUG-Owl Repo. Pour effectuer une inférence vidéo, vous pouvez utiliser le code suivant :
import torch
from mplug_owl_video . modeling_mplug_owl import MplugOwlForConditionalGeneration
from transformers import AutoTokenizer
from mplug_owl_video . processing_mplug_owl import MplugOwlImageProcessor , MplugOwlProcessor
pretrained_ckpt = 'MAGAer13/mplug-youku-bloomz-7b'
model = MplugOwlForConditionalGeneration . from_pretrained (
pretrained_ckpt ,
torch_dtype = torch . bfloat16 ,
device_map = { '' : 0 },
)
image_processor = MplugOwlImageProcessor . from_pretrained ( pretrained_ckpt )
tokenizer = AutoTokenizer . from_pretrained ( pretrained_ckpt )
processor = MplugOwlProcessor ( image_processor , tokenizer )
# We use a human/AI template to organize the context as a multi-turn conversation.
# <|video|> denotes an video placehold.
prompts = [
'''The following is a conversation between a curious human and AI assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.
Human: <|video|>
Human: 视频中的女人在干什么?
AI: ''' ]
video_list = [ 'yoga.mp4' ]
# generate kwargs (the same in transformers) can be passed in the do_generate()
generate_kwargs = {
'do_sample' : True ,
'top_k' : 5 ,
'max_length' : 512
}
inputs = processor ( text = prompts , videos = video_list , num_frames = 4 , return_tensors = 'pt' )
inputs = { k : v . bfloat16 () if v . dtype == torch . float else v for k , v in inputs . items ()}
inputs = { k : v . to ( model . device ) for k , v in inputs . items ()}
with torch . no_grad ():
res = model . generate ( ** inputs , ** generate_kwargs )
sentence = tokenizer . decode ( res . tolist ()[ 0 ], skip_special_tokens = True )
print ( sentence )
Si vous trouvez cet ensemble de données utile pour votre recherche, pensez à citer notre article.
@misc { xu2023youku_mplug ,
title = { Youku-mPLUG: A 10 Million Large-scale Chinese Video-Language Dataset for Pre-training and Benchmarks } ,
author = { Haiyang Xu, Qinghao Ye, Xuan Wu, Ming Yan, Yuan Miao, Jiabo Ye, Guohai Xu, Anwen Hu, Yaya Shi, Chenliang Li, Qi Qian, Que Maofei, Ji Zhang, Xiao Zeng, Fei Huang } ,
year = { 2023 } ,
eprint = { 2306.04362 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}