FastGen Quick Start Guide
This guide is aimed to get you quickly up and running DeepSpeed-MII and DeepSpeed-FastGen.
Requirements
1 or more NVIDIA GPUs with >=sm_80 compute capability (e.g., A100, A6000)
PyTorch installed in your local Python environment
Install
Install the latest version of DeepSpeed-MII with the following:
(.venv) $ pip install -U deepspeed-mii
Run a Non-Persistent Pipeline
A pipeline provides a non-persistent instance of the model for running inference. When the script running this code exits, the model will also be destroyed. The pipeline is ideal for doing quick tests or in cases where the best performance is not necessary.
Copy the following code block into an example.py file on your local machine.
Run it with deepspeed --num_gpus <num of GPUs> example.py.
import mii
pipe = mii.pipeline("mistralai/Mistral-7B-v0.1")
response = pipe(["DeepSpeed is", "Seattle is"], max_new_tokens=128)
for r in response:
print(r.generated_text)
Note
Depending on your internet connection, the download of model weights could
take a few minutes. If you wish to try a smaller model, replace
mistralai/Mistral-7B-v0.1 with facebook/opt-125m in the above code.
If the code successfully runs, you should see the generated text printed in your terminal.
Run a Persistent Deployment
In contrast the pipeline, deployments create a server process that persists beyond the execution of the python script. These deployments are intended for production use cases and allow for multiple clients to connect while providing the best performance from DeepSpeed-FastGen.
Copy the following code block into a serve.py file on your local machine.
Run it with python serve.py.
import mii
mii.serve("mistralai/Mistral-7B-v0.1")
You should see logging messages indicating the server is starting and a final
log message of server has started on ports [50051].
Now copy the following code block into a client.py file on your local
machine. Run it with python client.py.
import mii
client = mii.client("mistralai/Mistral-7B-v0.1")
response = client(["DeepSpeed is", "Seattle is"], max_new_tokens=128)
for r in response:
print(r.generated_text)
If the code successfully runs, you should see the generated text printed in your terminal. You can run this client script as many times (and from as many different processes) as you like and the model deployment will remain active.
Finally copy the following code block into a terminate.py file on your local
machine. Run it with python terminate.py.
import mii
client = mii.client("mistralai/Mistral-7B-v0.1")
client.terminate_server()
This will shutdown the model deployment and free GPU memory.