Sagify bietet eine vereinfachte Schnittstelle zur Verwaltung von Workflows für maschinelles Lernen für AWS Sagemaker und hilft Ihnen, sich auf den Aufbau von ML -Modellen und nicht auf die Infrastruktur zu konzentrieren. Die modulare Architektur umfasst ein LLM -Gateway -Modul, um eine einheitliche Schnittstelle zur Nutzung von Open Source- und Proprietary großsprachigen Modellen bereitzustellen. Das LLM -Gateway bietet über eine einfache API Zugang zu verschiedenen LLMs, sodass Sie sie leicht in Ihre Workflows einbeziehen können.
Ausführlicher Verweise auf Sagify finden Sie bitte zu: Lesen Sie die Dokumente
Sagify erfordert Folgendes:
In der Befehlszeile:
pip install sagify
Vergewissern Sie sich
Führen Sie schließlich den folgenden Befehl aus:
sagify cloud foundation-model-deploy --model-id model-txt2img-stabilityai-stable-diffusion-v2-1-base --model-version 1. * -n 1 -e ml.p3.2xlarge --aws-region us-east-1 --aws-profile sagemaker-devSie können die Werte für EC2-Typ (-E), AWS-Region und AWS-Profil mit Ihren bevorzugten ändern.
Sobald das stabile Diffusionsmodell bereitgestellt wurde, können Sie das generierte Code -Snippet verwenden, um es abzufragen. Genießen!
Die folgenden Modelle werden für den Chat -Abschluss angeboten:
| Modellname | URL |
|---|---|
| GPT-4 | https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo |
| GPT-4-32K | https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo |
| GPT-3,5-Turbo | https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo |
Für die Bilderstellung können Sie sich auf die folgenden Modelle verlassen:
| Modellname | URL |
|---|---|
| Dall-e-3 | https://platform.openai.com/docs/models/dall-e |
| Dall-e-2 | https://platform.openai.com/docs/models/dall-e |
Und für Einbettungen:
| Modellname | URL |
|---|---|
| Text-Embedding-3-Large | https://platform.openai.com/docs/models/embeddings |
| Text-Embedding-3-Small | https://platform.openai.com/docs/models/embeddings |
| Text-Embedding-ada-002 | https://platform.openai.com/docs/models/embeddings |
Alle diese Listen unterstützter Modelle auf OpenAI können abgerufen werden, indem die Befehls sagify llm models --all --provider openai ausgeführt werden. Wenn Sie sich nur auf Modelle mit Chat-Vervollständigungen konzentrieren möchten, führen Sie sagify llm models --chat-completions --provider openai aus. Für Bildkreationen und Einbettungen, sagify llm models --image-creations --provider openai und sagify llm models --embeddings --provider openai .
Die folgenden Open-Source-Modelle werden für den Chat-Abschluss angeboten:
| Modellname | URL |
|---|---|
| LAMA-2-7B | https://huggingface.co/meta-llama/llama-2-7b |
| LAMA-2-13B | https://huggingface.co/meta-llama/llama-2-13b |
| LAMA-2-70B | https://huggingface.co/meta-llama/llama-2-70b |
Für die Bilderstellung können Sie sich auf die folgenden Open-Source-Modelle verlassen:
| Modellname | URL |
|---|---|
| Stabilityai-Stabil-Diffusion-V2 | https://huggingface.co/stabilityai/stable-diffusion-2 |
| Stabilityai-Stabil-Diffusion-V2-1-Base | https://huggingface.co/stabilityai/stable-diffusion-2-1-base |
| Stabilityai-Stabil-Diffusion-V2-FP16 | https://huggingface.co/stabilityai/stable-diffusion-2/tree/fp16 |
Und für Einbettungen:
| Modellname | URL |
|---|---|
| bge-large-en | https://huggingface.co/baai/bge-large-en |
| Bge-Base-en | https://huggingface.co/baai/bge-base-en |
| gte-large | https://huggingface.co/thenlper/gte-large |
| GTE-Base | https://huggingface.co/thenlper/gte-base |
| E5-Large-V2 | https://huggingface.co/intfloat/e5-large-v2 |
| bge-small-en | https://huggingface.co/baai/bge-small-en |
| E5-Base-V2 | https://huggingface.co/intfloat/e5-base-v2 |
| Mehrsprachiger E5-Large | https://huggingface.co/intfloat/multilingual-e5-large |
| E5-Large | https://huggingface.co/intfloat/e5-large |
| gte-small | https://huggingface.co/thenlper/gte-small |
| E5-Base | https://huggingface.co/intfloat/e5-base |
| E5-Small-V2 | https://huggingface.co/intfloat/e5-small-v2 |
| Mehrsprachige E5-Base | https://huggingface.co/intfloat/multilingual-e5-base |
| All-Minilm-L6-V2 | https://huggingface.co/sentence-transformers/all-minilm-l6-v2 |
Alle diese Listen von unterstützten Open-Source-Modellen werden bei AWS Sagemaker unterstützt und können abgerufen werden, indem die Befehls- sagify llm models --all --provider sagemaker ausgeführt werden. Wenn Sie sich nur auf Chat-Vervollständigungsmodelle konzentrieren möchten, führen Sie sagify llm models --chat-completions --provider sagemaker aus. Für Bildkreationen und Einbettungen, sagify llm models --image-creations --provider sagemaker und sagify llm models --embeddings --provider sagemaker .
Sie müssen die folgenden Env -Variablen definieren, bevor Sie den LLM Gateway -Server starten:
OPENAI_API_KEY : Dein OpenAI -API -Schlüssel. Beispiel: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : Es sollte hier oder hier einen der Werte haben.OPENAI_EMBEDDINGS_MODEL : Es sollte hier einen der Werte haben.OPENAI_IMAGE_CREATION_MODEL : Es sollte hier einen der Werte haben. Der erste Schritt besteht darin, die LLM -Modell (en) bereitzustellen. Sie können alle Backend -Dienste (CHAT -Abschlüsse, Bildkreationen, Einbettungen) oder einige von ihnen bereitstellen.
Wenn Sie alle bereitstellen möchten, führen Sie sagify llm start --all aus. In diesem Befehl werden alle Backend -Dienste (CHAT -Abschlüsse, Bildkreationen, Einbettungen) mit der folgenden Konfiguration bereitgestellt:
{
"chat_completions" : {
"model" : " llama-2-7b " ,
"instance_type" : " ml.g5.2xlarge " ,
"num_instances" : 1 ,
},
"image_creations" : {
"model" : " stabilityai-stable-diffusion-v2-1-base " ,
"instance_type" : " ml.p3.2xlarge " ,
"num_instances" : 1 ,
},
"embeddings" : {
"model" : " gte-small " ,
"instance_type" : " ml.g5.2xlarge " ,
"num_instances" : 1 ,
},
} Sie können diese Konfiguration ändern, indem Sie Ihre eigene Konfigurationsdatei addieren, und dann können Sie sagify llm start -all --config YOUR_CONFIG_FILE.json .
Die Bereitstellung aller Backend -Dienste als Sagemaker -Endpunkte dauert 15 bis 30 Minuten.
Die bereitgestellten Modellnamen, bei denen es sich um die Sagemaker -Endpunktnamen handelt, werden in der versteckten Datei ausgedruckt und gespeichert .sagify_llm_infra.json Sie können sie auch über die AWS Sagemaker -Webkonsole auf sie zugreifen.
Sobald Sie Ihre Backend -Plattform eingerichtet haben, können Sie das Fastapi LLM Gateway lokal bereitstellen.
Wenn Sie die AWS -Sagemaker -Plattform verwenden, müssen Sie die folgenden Env -Variablen definieren, bevor Sie den LLM Gateway -Server starten:
AWS_ACCESS_KEY_ID : Es kann dasselbe sein, die Sie lokal für Sagify verwenden. Es sollte Zugang zu Sagemaker und S3 haben. Beispiel: export AWS_ACCESS_KEY_ID=...AWS_SECRET_ACCESS_KEY : Es kann dasselbe sein, die Sie lokal für Sagify verwenden. Es sollte Zugang zu Sagemaker und S3 haben. Beispiel: export AWS_ACCESS_KEY_ID=...AWS_REGION_NAME : AWS -Region, in der die LLM -Backend -Dienste (Sagemaker -Endpunkte) bereitgestellt werden.S3_BUCKET_NAME : s3 bucket name, wobei die erstellten bilder des backend backend service gespeichert werden.IMAGE_URL_TTL_IN_SECONDS : ttl in Sekunden der temporären URL zu den erstellten Bildern. Standardwert: 3600.SM_CHAT_COMPLETIONS_MODEL : Der Sagemaker -Endpunktname, bei dem das Modell des Chat -Abschlusses bereitgestellt wird.SM_EMBEDDINGS_MODEL : Der Sagemaker -Endpunktname, bei dem das Embettdings -Modell bereitgestellt wird.SM_IMAGE_CREATION_MODEL : Der Sagemaker -Endpunktname, bei dem das Bilderstellungsmodell bereitgestellt wird.Bei der Verwendung der OpenAI -Plattform müssen Sie die folgenden Env -Variablen definieren, bevor Sie den LLM Gateway -Server starten:
OPENAI_API_KEY : Dein OpenAI -API -Schlüssel. Beispiel: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : Es sollte hier oder hier einen der Werte haben.OPENAI_EMBEDDINGS_MODEL : Es sollte hier einen der Werte haben.OPENAI_IMAGE_CREATION_MODEL : Es sollte hier einen der Werte haben. Jetzt können Sie den Befehl sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local ausführen, um das LLM-Gateway lokal zu starten. Sie können den Namen des Bildes über das Argument --image -Argument ändern.
Dieser Befehl gibt die Docker -Container -ID aus. Sie können den Container anhalten, indem Sie docker stop <CONTAINER_ID> ausführen.
Beispiele
( Denken Sie daran, zunächst alle Umgebungsvariablen zu exportieren, die Sie benötigen .)
In dem Fall möchten Sie ein Docker -Bild erstellen und es dann ausführen
sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local
Wenn Sie das Bild nur erstellen möchten
sagify llm gateway --image sagify-llm-gateway:v0.1.0
Wenn Sie beide Plattformen (OpenAI und AWS Sagemaker) unterstützen möchten, geben Sie alle Env -Variablen für beide Plattformen weiter.
Falls Sie das LLM -Gateway für AWS Fargate bereitstellen möchten, können Sie diese allgemeinen Schritte ausführen:
Hier ist eine Beispiel -CloudFormation -Vorlage, um einen Fastapi -Dienst für AWS Fargate mit 5 Umgebungsvariablen bereitzustellen:
Resources :
MyFargateTaskDefinition :
Type : AWS::ECS::TaskDefinition
Properties :
Family : my-fargate-task
ContainerDefinitions :
- Name : fastapi-container
Image : <YOUR_ECR_REPOSITORY_URI>
Memory : 512
PortMappings :
- ContainerPort : 80
Environment :
- Name : AWS_ACCESS_KEY_ID
Value : " value1 "
- Name : AWS_SECRET_ACCESS_KEY
Value : " value2 "
- Name : AWS_REGION_NAME
Value : " value3 "
- Name : S3_BUCKET_NAME
Value : " value4 "
- Name : IMAGE_URL_TTL_IN_SECONDS
Value : " value5 "
- Name : SM_CHAT_COMPLETIONS_MODEL
Value : " value6 "
- Name : SM_EMBEDDINGS_MODEL
Value : " value7 "
- Name : SM_IMAGE_CREATION_MODEL
Value : " value8 "
- Name : OPENAI_CHAT_COMPLETIONS_MODEL
Value : " value9 "
- Name : OPENAI_EMBEDDINGS_MODEL
Value : " value10 "
- Name : OPENAI_IMAGE_CREATION_MODEL
Value : " value11 "
MyFargateService :
Type : AWS::ECS::Service
Properties :
Cluster : default
TaskDefinition : !Ref MyFargateTaskDefinition
DesiredCount : 2
LaunchType : FARGATE
NetworkConfiguration :
AwsvpcConfiguration :
Subnets :
- <YOUR_SUBNET_ID>
SecurityGroups :
- <YOUR_SECURITY_GROUP_ID> Sobald das LLM -Gateway bereitgestellt ist, können Sie auf HOST_NAME/docs darauf zugreifen.
curl --location --request POST ' /v1/chat/completions '
--header ' Content-Type: application/json '
--data-raw ' {
"provider": "sagemaker",
"messages": [
{
"role": "system",
"content": "you are a cook"
},
{
"role": "user",
"content": "what is the recipe of mayonnaise"
}
],
"temperature": 0,
"max_tokens": 600,
"top_p": 0.9,
"seed": 32
} 'Beispielantworten
200 Antwort
{
"id" : " chatcmpl-8167b99c-f22b-4e04-8e26-4ca06d58dc86 " ,
"object" : " chat.completion " ,
"created" : 1708765682 ,
"provider" : " sagemaker " ,
"model" : " meta-textgeneration-llama-2-7b-f-2024-02-24-08-49-32-123 " ,
"choices" : [
{
"index" : 0 ,
"message" : {
"role" : " assistant " ,
"content": " Ah, a fellow foodie! Mayonnaise is a classic condiment that's easy to make and can elevate any dish. Here's my trusty recipe for homemade mayonnaise:nnIngredients:nn* 2 egg yolksn* 1/2 cup (120 ml) neutral-tasting oil, such as canola or grapeseedn* 1 tablespoon lemon juice or vinegarn* Salt and pepper to tastennInstructions:nn1. In a small bowl, whisk together the egg yolks and lemon juice or vinegar until well combined.n2. Slowly pour in the oil while continuously whisking the mixture. You can do this by hand with a whisk or use an electric mixer on low speed.n3. Continue whisking until the mixture thickens and emulsifies, which should take about 5-7 minutes. You'll know it's ready when it reaches a thick, creamy consistency.n4. Taste and adjust the seasoning as needed. You can add more salt, pepper, or lemon juice to taste.n5. Transfer the mayonnaise to a jar or airtight container and store it in the fridge for up to 1 week.nnThat's it! Homemade mayonnaise is a great way to control the ingredients and flavor, and it's also a fun kitchen experiment. Enjoy!"
}
}
]
}curl --location --request POST ' /v1/embeddings '
--header ' Content-Type: application/json '
--data-raw ' {
"provider": "sagemaker",
"input": [
"The mayonnaise was delicious"
]
} 'Beispielantworten
200 Antwort
{
"data" : [
{
"object" : " embedding " ,
"embedding" : [
-0.04274585098028183 ,
0.021814687177538872 ,
-0.004705613013356924 ,
...
-0.07548460364341736 ,
0.036427777260541916 ,
0.016453085467219353 ,
0.004641987383365631 ,
-0.0072729517705738544 ,
0.02343473769724369 ,
-0.002924458822235465 ,
0.0339619480073452 ,
0.005262510851025581 ,
-0.06709178537130356 ,
-0.015170316211879253 ,
-0.04612169787287712 ,
-0.012380547821521759 ,
-0.006663458421826363 ,
-0.0573800653219223 ,
0.007938326336443424 ,
0.03486081212759018 ,
0.021514462307095528
],
"index" : 0
}
],
"provider" : " sagemaker " ,
"model" : " hf-sentencesimilarity-gte-small-2024-02-24-09-24-27-341 " ,
"object" : " list "
}curl --location --request POST ' /v1/images/generations '
--header ' Content-Type: application/json '
--data-raw ' {
"provider": "sagemaker",
"prompt":
"A baby sea otter"
,
"n": 1,
"width": 512,
"height": 512,
"seed": 32,
"response_format": "url"
} 'Beispielantworten
200 Antwort
{
"provider" : " sagemaker " ,
"model" : " stable-diffusion-v2-1-base-2024-02-24-11-43-32-177 " ,
"created" : 1708775601 ,
"data" : [
{
"url" : " https://your-bucket.s3.amazonaws.com/31cedd17-ccd7-4cba-8dea-cb7e8b915782.png?AWSAccessKeyId=AKIAUKEQBDHITP26MLXH&Signature=%2Fd1J%2FUjOWbRnP5cwtkSzYUVoEoo%3D&Expires=1708779204 "
}
]
}E -Mail: [email protected]
Wir haben festgestellt, dass es keinen einzigen LLM gibt, der sie alle regiert!