O Sagify fornece uma interface simplificada para gerenciar fluxos de trabalho de aprendizado de máquina no AWS Sagemaker, ajudando você a se concentrar na criação de modelos de ML em vez de infraestrutura. Sua arquitetura modular inclui um módulo de gateway LLM para fornecer uma interface unificada para alavancar modelos de idiomas de código aberto e de código aberto e proprietários. O Gateway LLM fornece acesso a vários LLMs através de uma API simples, permitindo que você os incorpore facilmente aos seus fluxos de trabalho.
Para referência detalhada ao Sagify, vá para: Leia os documentos
Sagify requer o seguinte:
Na linha de comando:
pip install sagify
Certifique -se de configurar sua conta do AWS seguindo as instruções na seção Configurar a conta da AWS
Finalmente, execute o seguinte comando:
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-devVocê pode alterar os valores do tipo EC2 (-e), região da AWS e perfil da AWS com seus preferidos.
Depois que o modelo de difusão estável é implantado, você pode usar o trecho de código gerado para consultá -lo. Aproveitar!
Os seguintes modelos são oferecidos para conclusões do bate -papo:
| Nome do modelo | 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 |
Para criação de imagens, você pode confiar nos seguintes modelos:
| Nome do modelo | Url |
|---|---|
| Dall-e-3 | https://platform.openai.com/docs/models/dall-e |
| Dall-e-2 | https://platform.openai.com/docs/models/dall-e |
E para incorporações:
| Nome do modelo | Url |
|---|---|
| Text-3-Large | https://platform.openai.com/docs/models/embeddings |
| Text-embebedding-3-small | https://platform.openai.com/docs/models/embeddings |
| Encadeamento de texto-Ada-002 | https://platform.openai.com/docs/models/embeddings |
Todas essas listas de modelos suportadas no OpenAI podem ser recuperadas executando os sagify llm models --all --provider openai . Se você deseja se concentrar apenas nos modelos de conclusão de bate-papo, execute sagify llm models --chat-completions --provider openai . Para criações e incorporações de imagem, sagify llm models --image-creations --provider openai e sagify llm models --embeddings --provider openai , respectivamente.
Os seguintes modelos de código aberto são oferecidos para conclusões de bate-papo:
| Nome do modelo | Url |
|---|---|
| LLAMA-2-7B | https://huggingface.co/meta-llama/llama-2-7b |
| LLAMA-2-13B | https://huggingface.co/meta-llama/llama-2-13b |
| LLAMA-2-70B | https://huggingface.co/meta-llama/llama-2-70b |
Para criação de imagens, você pode confiar nos seguintes modelos de código aberto:
| Nome do modelo | Url |
|---|---|
| Stabilityai-estável-difusão-V2 | https://huggingface.co/stabilityai/stable-diffusion-2 |
| Stabilityai-estável-difusão-V2-1-BASE | https://huggingface.co/stabilityai/stable-diffusion-2-1-base |
| Stabilityai-estável-difusão-v2-fp16 | https://huggingface.co/stabilityi/stable-diffusion-2/tree/fp16 |
E para incorporações:
| Nome do modelo | 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 |
| Multilíngue-E5-Large | https://huggingface.co/intfloat/multilingual-e5-large |
| E5-grande | 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 |
| Multilíngue-E5-BASE | https://huggingface.co/intfloat/multilinguly-e5-base |
| Minilm-L6-V2 | https://huggingface.co/sentence-transformers/all-minilm-l6-v2 |
Todas essas listas de modelos de código aberto suportadas são suportadas no AWS Sagemaker e podem ser recuperadas executando os sagify llm models --all --provider sagemaker . Se você deseja se concentrar apenas nos modelos de conclusão de bate-papo, execute sagify llm models --chat-completions --provider sagemaker . Para criações de imagem e incorporação, sagify llm models --image-creations --provider sagemaker e sagify llm models --embeddings --provider sagemaker , respectivamente.
Você precisa definir as seguintes variáveis Env antes de iniciar o servidor LLM Gateway:
OPENAI_API_KEY : sua chave de API do OpenAI. Exemplo: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : deve ter um dos valores aqui ou aqui.OPENAI_EMBEDDINGS_MODEL : ele deve ter um dos valores aqui.OPENAI_IMAGE_CREATION_MODEL : deve ter um dos valores aqui. O primeiro passo é implantar o (s) modelo (s) LLM. Você pode optar por implantar todos os serviços de back -end (conclusões de bate -papo, criações de imagens, incorporação) ou algumas delas.
Se você deseja implantar todos eles, execute sagify llm start --all . Este comando implantará todos os serviços de back -end (conclusões de bate -papo, criações de imagens, incorporação) com a seguinte configuração:
{
"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 ,
},
} Você pode alterar essa configuração suando seu próprio arquivo de configuração e, em seguida, pode executar sagify llm start -all --config YOUR_CONFIG_FILE.json .
Demora de 15 a 30 minutos para implantar todos os serviços de back -end como terminais de sagemaker.
Os nomes de modelos implantados, que são os nomes dos pontos de extremidade do Sagemaker, são impressos e armazenados no arquivo oculto .sagify_llm_infra.json . Você também pode acessá -los no AWS Sagemaker Web Console.
Depois de configurar sua plataforma de back -end, você pode implantar o gateway FASTAPI LLM localmente.
No caso de usar a plataforma AWS Sagemaker, você precisa definir as seguintes variáveis Env antes de iniciar o servidor de gateway LLM:
AWS_ACCESS_KEY_ID : pode ser o mesmo que você usa localmente para sagify. Deve ter acesso ao Sagemaker e S3. Exemplo: export AWS_ACCESS_KEY_ID=...AWS_SECRET_ACCESS_KEY : pode ser o mesmo que você usa localmente para sagify. Deve ter acesso ao Sagemaker e S3. Exemplo: export AWS_ACCESS_KEY_ID=...AWS_REGION_NAME : região AWS, onde os serviços de backend LLM (terminais de sagemaker) são implantados.S3_BUCKET_NAME : S3 Nome do balde em que as imagens criadas pelo serviço de back -end de criação de imagens são armazenadas.IMAGE_URL_TTL_IN_SECONDS : ttl em segundos do URL temporário para as imagens criadas. Valor padrão: 3600.SM_CHAT_COMPLETIONS_MODEL : O nome do ponto final do Sagemaker onde o modelo de conclusão de bate -papo é implantado.SM_EMBEDDINGS_MODEL : O nome do ponto de extremidade do Sagemaker onde o modelo de incorporação é implantado.SM_IMAGE_CREATION_MODEL : o nome do ponto final do sagemaker onde o modelo de criação de imagens é implantado.No caso de usar a plataforma OpenAI, você precisa definir as seguintes variáveis Env antes de iniciar o servidor LLM Gateway:
OPENAI_API_KEY : sua chave de API do OpenAI. Exemplo: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : deve ter um dos valores aqui ou aqui.OPENAI_EMBEDDINGS_MODEL : ele deve ter um dos valores aqui.OPENAI_IMAGE_CREATION_MODEL : deve ter um dos valores aqui. Agora, você pode executar o comando sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local para iniciar o gateway LLM localmente. Você pode alterar o nome da imagem através do argumento --image .
Este comando produzirá o ID do contêiner do docker. Você pode interromper o contêiner executando docker stop <CONTAINER_ID> .
Exemplos
( Lembre -se de exportar primeiro todas as variáveis de ambiente que você precisa )
No caso, você deseja criar uma imagem do Docker e depois executá -la
sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local
Se você quiser usar, basta construir a imagem
sagify llm gateway --image sagify-llm-gateway:v0.1.0
Se você deseja suportar as duas plataformas (OpenAI e AWS Sagemaker), passe todas as variáveis ENV para as duas plataformas.
Caso você queira implantar o Gateway LLM para a AWS Fargate, poderá seguir estas etapas gerais:
Aqui está um exemplo de modelo de formação de nuvem para implantar um serviço FASTAPI no AWS Fargate com 5 variáveis de ambiente:
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> Depois que o gateway LLM for implantado, você pode acessá -lo no HOST_NAME/docs .
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
} 'Exemplo de respostas
200 resposta
{
"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"
]
} 'Exemplo de respostas
200 resposta
{
"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"
} 'Exemplo de respostas
200 resposta
{
"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]
Percebemos que não há um único LLM para governar todos eles!