Notiz
Dieses Repository wurde archiviert und wird nicht mehr aufrechterhalten, da kürzlich wie VLLM und TGI viel effizientere Servierframeworks veröffentlicht wurden.
Dieses Repo bietet Demos und Paketen, um schnelle Inferenzlösungen für die Blüte durchzuführen. Einige der Lösungen haben ihre eigenen Repos. In diesem Fall wird stattdessen eine Verbindung zu den entsprechenden Repos bereitgestellt.
Wir unterstützen das Umarmungsface -Beschleunigungs- und Deepspeed -Inferenz für die Generation.
Installieren Sie die erforderlichen Pakete:
pip install flask flask_api gunicorn pydantic accelerate huggingface_hub > =0.9.0 deepspeed > =0.7.3 deepspeed-mii==0.0.2Alternativ können Sie DeepSpeed auch von Quelle installieren:
git clone https://github.com/microsoft/DeepSpeed
cd DeepSpeed
CFLAGS= " -I $CONDA_PREFIX /include/ " LDFLAGS= " -L $CONDA_PREFIX /lib/ " TORCH_CUDA_ARCH_LIST= " 7.0 " DS_BUILD_CPU_ADAM=1 DS_BUILD_AIO=1 DS_BUILD_UTILS=1 pip install -e . --global-option= " build_ext " --global-option= " -j8 " --no-cache -v --disable-pip-version-checkAlle bereitgestellten Skripte werden auf 8 A100 80 GB GPUs für Bloom 176b (FP16/BF16) und 4 A100 80 GB GPUs für Bloom 176B (INT8) getestet. Diese Skripte funktionieren möglicherweise nicht für andere Modelle oder eine andere Anzahl von GPUs.
DS -Inferenz wird mit Logik eingesetzt, die aus der DeepSpeed MII -Bibliothek ausgeliehen wurden.
Hinweis: Manchmal wird der GPU -Speicher nicht befreit, wenn die DS -Inferenz -Bereitstellung abstürzt. Sie können diesen Gedächtnis befreien, indem Sie killall python im Terminal ausführen.
Verwenden Sie zur Verwendung von Bloom quantisiert dType = int8. Ändern Sie auch den Model_Name in Microsoft/Bloom-Deepspeed-Inference-Int8 für DeepSpeed-Inferenz. Für HF Accelerate ist für model_name keine Änderung erforderlich.
HF Accelerate verwendet LLM.Int8 () und DS-Inferenz für die Quantisierung nach der Training.
Dies bittet jedes Mal nach Generate_kwargs. Beispiel: generate_kwargs =
{ "min_length" : 100 , "max_new_tokens" : 100 , "do_sample" : false }python -m inference_server.cli --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework hf_accelerate --generate_kwargs ' {"min_length": 100, "max_new_tokens": 100, "do_sample": false} 'python -m inference_server.cli --model_name microsoft/bloom-deepspeed-inference-fp16 --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --generate_kwargs ' {"min_length": 100, "max_new_tokens": 100, "do_sample": false} ' Make <model_name> kann verwendet werden, um einen Generationsserver zu starten. Bitte beachten Sie, dass die Serviermethode synchron ist und Benutzer in der Warteschlange warten müssen, bis die vorhergehenden Anforderungen bearbeitet wurden. Ein Beispiel für Fire Server -Anfragen finden Sie hier. Alternativey, eine Dockerfile, wird ebenfalls bereitgestellt, wodurch ein Generationserver auf Port 5000 gestartet wird.
Eine interaktive Benutzeroberfläche kann über den folgenden Befehl gestartet werden, um eine Verbindung zum Generationsserver herzustellen. Die Standard -URL der UI ist http://127.0.0.1:5001/ . Der model_name wird nur von der Benutzeroberfläche verwendet, um zu überprüfen, ob das Modell Decoder- oder Encoder-DeCoder-Modell ist.
python -m ui --model_name bigscience/bloom Dieser Befehl startet die folgende Benutzeroberfläche, um mit der Generation zu spielen. Entschuldigung für das beschissene Design. Unglücklicherweise gehen meine UI -Fähigkeiten nur so weit. ??? 
python -m inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework hf_accelerate --benchmark_cycles 5deepspeed --num_gpus 8 --module inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --benchmark_cycles 5Alternativ schneller laden Sie das Modell schneller:
deepspeed --num_gpus 8 --module inference_server.benchmark --model_name microsoft/bloom-deepspeed-inference-fp16 --model_class AutoModelForCausalLM --dtype fp16 --deployment_framework ds_inference --benchmark_cycles 5deepspeed --num_gpus 8 --module inference_server.benchmark --model_name bigscience/bloom --model_class AutoModelForCausalLM --dtype bf16 --deployment_framework ds_zero --benchmark_cycles 5Wenn Sie auf Dinge stoßen, die nicht funktionieren oder andere Fragen haben, öffnen Sie bitte ein Problem im entsprechenden Backend:
Wenn es ein bestimmtes Problem mit einem der Skripte und nicht nur im Backend gibt, öffnen Sie hier ein Problem und tag @mayank31398.
Lösungen entwickelt, um eine große Batch -Inferenz lokal durchzuführen:
Jax:
Eine Lösung, die entwickelt wurde, die in einem Servermodus verwendet werden (dh eine unterschiedliche Stapelgröße, unterschiedliche Anforderungsrate), finden Sie hier. Dies wird in Rost implementiert.