Francois Vieille commited on
Commit
83b59b7
1 Parent(s): 0e41fe9

add readme

Browse files
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ *.py
README.md ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - fr
4
+
5
+ license: mit
6
+
7
+ pipeline_tag: "fill-mask"
8
+
9
+ widget:
10
+ - text: <mask> tt le monde !
11
+ - text: cc<mask> va?
12
+ - text: <mask> la Fronce !
13
+
14
+ tags:
15
+ - fill-mask
16
+ - convbert
17
+ - twitch
18
+ ---
19
+
20
+ ## Modèle de Masking sur les données Twitch FR
21
+
22
+ L'expérimentation menée au sein de Lincoln avait pour principal objectif de mettre en œuvre des techniques NLP from scratch sur un corpus de messages issus d’un chat Twitch. Ces derniers sont exprimés en français, mais sur une plateforme internet avec le vocabulaire internet que cela implique (fautes, vocabulaire communautaires, abréviations, anglicisme, emotes, ...).
23
+
24
+ Nos contraintes sont celles d’une entreprise n’ayant pas une volumétrie excessive de données et une puissance infinie de calcul.
25
+ Il a été nécessaire de construire un nouveau tokenizer afin de mieux correspondre à notre corpus plutôt qu’un tokenizer français existant.
26
+
27
+ Note corpus étant faible en volumétrie par rapport aux données habituelles pour entrainer un modèle BERT, nous avons opté pour l’entrainement d’un modèle dit « small ». Et il a été montré dans la littérature qu’un corpus de quelques giga octets peut donner de bons résultats, c’est pourquoi nous avons continué avec notre corpus.
28
+
29
+ La limite de la puissance de calcul a été contourné à l’aide d’une nouvelle architecture d’apprentissage basée sur un double modèle générateur / discriminateur.
30
+
31
+ Ceci nous a permis d’entrainer un modèle de langue ConvBERT sur nos données, ainsi qu’un modèle de masking en quelques heures sur une carte GPU V100.
32
+
33
+ _Nous garantissons pas la stabilité du modèle sur le long terme. Modèle réalisé dans le cadre d'un POC._
34
+
35
+ ## Données
36
+
37
+ | Streamer | Nbr de messages | Categories notables en 2021 |
38
+ | --------------------------------------------- | --------------- | ---------------------------------- |
39
+ | Ponce | 2 604 935 | Chatting/Mario Kart/FIFA |
40
+ | Domingo | 1 209 703 | Chatting/talk-shows/FM2O21 |
41
+ | Mistermv | 1 205 882 | Isaac/Special events/TFT |
42
+ | Zerator | 900 894 | New World/WOW/Valorant |
43
+ | Blitzstream | 821 585 | Chess |
44
+ | Squeezie | 602 148 | Chatting / Minecraft |
45
+ | Antoinedaniellive | 548 497 | Geoguessr |
46
+ | Jeanmassietaccropolis/jeanmassiet | 301 387 | Talk-shows/chatting/special events |
47
+ | Samueletienne | 215 956 | chatting |
48
+
49
+ Sur la période du 12/03/2021 au 22/07/2021. La totalité des messages comptent 9 410 987 messages sur ces neufs streamers. Ces messages sont issus du canal IRC, donc n’ont pas subi de modération
50
+
51
+ Les données d'entrainement du modèle de masking contient 899 652 instances de train et 99 962 instances de test. Les données ont été formaté en concaténant les messages sur une fenêtre de 10s. Cette fenêtre correspond à une fenêtre courte qui regroupe des messages très « proches » temporellement.
52
+
53
+ * 512 tokens max
54
+ * Probabilité du « mask » : 15%
55
+
56
+
57
+ ## Application
58
+
59
+ Voir github public [lincoln/twitchatds](https://github.com/Lincoln-France/twitchatds) pour les détails d'implémentation et les résultats.
60
+
61
+ ## Remarques
62
+
63
+ * Expérimentation ponctuelle
64
+ * Les métriques d'entrainement sont disponibles dans l'onglet _Training metrics_
65
+ * Pour une meilleure stabilité, les données doivent être plus hétérogènes et volumineuse. Le modèle doit être entrainé + de 24h.
66
+ * Le token `<mask>` fonctionne probablement mieux sans laisser d'espace à gauche. Cela est dû au fait que `lstrip=False` pour ce token spécial.
67
+
68
+ ## Usage
69
+
70
+ ```python
71
+ from transformers import AutoTokenizer, ConvBertForMaskedLM
72
+ from transformers import pipeline
73
+
74
+ model_name = 'lincoln/2021twitchfr-conv-bert-small-mlm'
75
+ tokenizer_name = 'lincoln/2021twitchfr-conv-bert-small'
76
+
77
+ loaded_tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
78
+ loaded_model = ConvBertForMaskedLM.from_pretrained(model_name)
79
+
80
+ nlp = pipeline('fill-mask', model=loaded_model, tokenizer=loaded_tokenizer)
81
+ nlp('<mask> les gens !')
82
+ ```
83
+
84
+ ## Modèles:
85
+
86
+ * [2021twitchfr-conv-bert-small](https://huggingface.co/lincoln/2021twitchfr-conv-bert-small)
87
+ * [2021twitchfr-conv-bert-small-mlm](https://huggingface.co/lincoln/2021twitchfr-conv-bert-small-mlm)
88
+ * [2021twitchfr-conv-bert-small-mlm-simcse](https://huggingface.co/lincoln/2021twitchfr-conv-bert-small-mlm-simcse)
89
+
90
+
91
+
config.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "/mnt/twitchat/models/convbert-small-hf-mlm",
3
+ "architectures": [
4
+ "ConvBertForMaskedLM"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "bos_token_id": 0,
8
+ "classifier_dropout": null,
9
+ "conv_kernel_size": 9,
10
+ "embedding_size": 128,
11
+ "eos_token_id": 2,
12
+ "head_ratio": 2,
13
+ "hidden_act": "gelu",
14
+ "hidden_dropout_prob": 0.1,
15
+ "hidden_size": 256,
16
+ "initializer_range": 0.02,
17
+ "intermediate_size": 1024,
18
+ "layer_norm_eps": 1e-12,
19
+ "max_position_embeddings": 512,
20
+ "model_type": "convbert",
21
+ "num_attention_heads": 4,
22
+ "num_groups": 1,
23
+ "num_hidden_layers": 12,
24
+ "pad_token_id": 0,
25
+ "torch_dtype": "float32",
26
+ "transformers_version": "4.15.0",
27
+ "type_vocab_size": 2,
28
+ "vocab_size": 16361
29
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6e1f37e863b10c60e3980150196f11af2c280cffce88ae909be047d75434b00c
3
+ size 45641279
runs/events.out.tfevents.1632753082.vmlgpuv100.10893.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:79702817bcddabdfb6dbd7af94d25a982f0c9934501ece39370aca994e8214da
3
+ size 458586