Filé à partir de https://github.com/mallorbc/gptneox20b_huggingface. Exécute l'inférence pour GPT NEOX 20B et OPT-30B
Idéalement, vous avez un ou plusieurs GPU qui totalisent 48 Go de VRAM ou plus.
Cependant, même si vous ne le faites pas, vous pouvez toujours exécuter le modèle, cela prendra beaucoup plus de temps.
Par exemple, courir avec un 3090 plutôt que deux prendrait environ 10 minutes pour générer 100 jetons vs 10-30 secondes si vous le faisiez deux GPU.
Si vous n'avez pas assez de VRAM, vous devez vous assurer que vous avez assez de RAM pour compenser.
Si vous souhaitez télécharger les poids comme je le fais, vous avez besoin d'au moins 50 Go de VRAM pour les poids Float16 ou BFLOAT16. Si vous souhaitez utiliser BFLOAT16, vous devez vous assurer que votre CPU et votre GPU le soutiennent.
Nécessite un ou plusieurs GPU qui totalisent 70 Go de VRAM ou plus. Semblable à GPT-Neox, le modèle s'adaptera toujours sur le CPU, mais l'OptDecoderlayer est douloureusement lent en utilisant l'inférence du CPU.
pip3 install -r requirements.txt
python3 main.py # for GPT NeoX 20B
# or alternatively
python3 main_opt.py # for OPT-30B
Il y a deux drapeaux, chacun peut être vu avec -h
Utilisez l'indicateur --fp16 pour charger et enregistrer les poids en mode float16.
Utilisez l'indicateur --bf16 pour charger et enregistrer les poids en mode BFLOAT16.
Utilisez BFLOAT16 lorsque vous le pouvez comme c'est meilleur.
Lors de l'exécution, le modèle sera toujours jeté sur BFLOAT16 à moins que votre GPU / CPU ne puisse le gérer. Vous pouvez désirer un comportement différent.