Sagify предоставляет упрощенный интерфейс для управления рабочими процессами машинного обучения на AWS SageMaker, помогая вам сосредоточиться на создании моделей ML, а не на инфраструктуре. Его модульная архитектура включает в себя модуль шлюза LLM для обеспечения унифицированного интерфейса для использования как с открытым исходным кодом, так и с собственными языковыми моделями. Gateway LLM дает доступ к различным LLMS через простой API, позволяя легко включить их в ваши рабочие процессы.
Для получения подробной ссылки на Sagify, пожалуйста, перейдите по адресу: прочитайте документы
Смешание требует следующего:
В командной строке:
pip install sagify
Обязательно настройте свою учетную запись AWS, следуя инструкциям в разделе «Настройка учетной записи AWS».
Наконец, запустите следующую команду:
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-devВы можете изменить значения для типа EC2 (-E), региона AWS и профиля AWS с вашими предпочтительными.
Как только стабильная диффузионная модель развернута, вы можете использовать сгенерированный фрагмент кода, чтобы запросить его. Наслаждаться!
Для завершения чата предлагаются следующие модели:
| Название модели | 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 |
Для создания изображения вы можете положиться на следующие модели:
| Название модели | URL |
|---|---|
| Далл-Э-3 | https://platform.openai.com/docs/models/dall-e |
| Далл-и-2 | https://platform.openai.com/docs/models/dall-e |
И для внедрения:
| Название модели | URL |
|---|---|
| Текст-эмблдинг-3-картанный | https://platform.openai.com/docs/models/embeddings |
| Текст-эмбединг-3-ял | https://platform.openai.com/docs/models/embeddings |
| Текст-эмблдинг-ADA-002 | https://platform.openai.com/docs/models/embeddings |
Все эти списки поддерживаемых моделей на OpenaI могут быть извлечены путем запуска команды sagify llm models --all --provider openai . Если вы хотите сосредоточиться только на моделях завершения чата, то запустите sagify llm models --chat-completions --provider openai . Для создания изображений и встроений, sagify llm models --image-creations --provider openai и sagify llm models --embeddings --provider openai , соответственно.
Для завершения чата предлагаются следующие модели с открытым исходным кодом:
| Название модели | URL |
|---|---|
| Лама-2-7B | https://huggingface.co/meta-llama/llama-2-7b |
| Лама-2-13b | https://huggingface.co/meta-llama/llama-2-13b |
| Лама-2-70b | https://huggingface.co/meta-llama/llama-2-70b |
Для создания изображения вы можете положиться на следующие модели с открытым исходным кодом:
| Название модели | URL |
|---|---|
| Stabilityai-Stable-Diffusion-V2 | https://huggingface.co/stability/stable-diffusion-2 |
| Стабильность Стабильна-Диффузия-V2-1-база | https://huggingface.co/stability/stable-diffusion-2-1-base |
| Stabilityai-Stable-Diffusion-V2-FP16 | https://huggingface.co/stability/stable-diffusion-2/tree/fp16 |
И для внедрения:
| Название модели | 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-баз | 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 |
| Многоязычный-E5-широкий | https://huggingface.co/intfloat/multingual-e5-large |
| E5-Large | https://huggingface.co/intfloat/e5-large |
| Gte-Small | https://huggingface.co/thenlper/gte-small |
| E5-баз | https://huggingface.co/intfloat/e5-base |
| E5-Small-V2 | https://huggingface.co/intfloat/e5-small-v2 |
| Многоязычная-E5-база | https://huggingface.co/intfloat/multingual-e5-base |
| All-Minilm-L6-V2 | https://huggingface.co/sentence-transformers/all-minilm-l6-v2 |
Все эти списки поддерживаемых моделей с открытым исходным кодом поддерживаются на AWS SageMaker и могут быть получены с помощью команды sagify llm models --all --provider sagemaker . Если вы хотите сосредоточиться только на моделях завершения чата, то запустите sagify llm models --chat-completions --provider sagemaker . Для созданий изображений и встроений, sagify llm models --image-creations --provider sagemaker и sagify llm models --embeddings --provider sagemaker , соответственно.
Вам необходимо определить следующие переменные ENV, прежде чем запустить сервер шлюза LLM:
OPENAI_API_KEY : ваш ключ API Openai. Пример: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : он должен иметь одно из значений здесь или здесь.OPENAI_EMBEDDINGS_MODEL : он должен иметь здесь одно из значений.OPENAI_IMAGE_CREATION_MODEL : У него должно быть одно из значений здесь. Первым шагом является развертывание модели LLM. Вы можете развернуть все сервисные услуги (завершение чата, создания изображений, встраиваемые) или некоторые из них.
Если вы хотите развернуть их все, запустите sagify llm start --all . Эта команда будет развернуть все сервисы бэкэнд (завершение чата, создание изображений, встраивание) со следующей конфигурацией:
{
"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 ,
},
} Вы можете изменить эту конфигурацию, надавливая свой собственный файл конфигурации, затем вы можете запустить sagify llm start -all --config YOUR_CONFIG_FILE.json .
Для развертывания всех бэкэнд -услуг требуется от 15 до 30 минут в качестве конечных точек SageMaker.
Развернутые имена моделей, которые являются именами конечных точек SageMaker, распечатаны и хранятся в скрытом файле .sagify_llm_infra.json . Вы также можете получить доступ к ним из веб -консоли AWS SageMaker.
После того, как вы настроили свою бэкэнд -платформу, вы можете развернуть шлюз Fastapi LLM на локальном уровне.
В случае использования платформы AWS SageMaker вам необходимо определить следующие переменные ENV, прежде чем запустить сервер шлюза LLM:
AWS_ACCESS_KEY_ID : Это может быть тот же, который вы используете локально для промежутка. Он должен иметь доступ к SageMaker и S3. Пример: export AWS_ACCESS_KEY_ID=...AWS_SECRET_ACCESS_KEY : Это может быть тот же, который вы используете локально для Sagify. Он должен иметь доступ к SageMaker и S3. Пример: export AWS_ACCESS_KEY_ID=...AWS_REGION_NAME : регион AWS, где развернуты бэкэнды LLM (конечные точки SAGEMAKER).S3_BUCKET_NAME : S3 Имя ведра, где хранятся созданные изображения с помощью сервиса создания изображения.IMAGE_URL_TTL_IN_SECONDS : ttl в секундах временного URL -адреса для созданных изображений. Значение по умолчанию: 3600.SM_CHAT_COMPLETIONS_MODEL : Имя конечной точки SageMaker, где развернута модель завершения чата.SM_EMBEDDINGS_MODEL : Имя конечной точки SAGEMAKER, где развернута модель Enterdings.SM_IMAGE_CREATION_MODEL : Имя конечной точки SageMaker, где развернута модель создания изображения.В случае использования платформы Openai вам необходимо определить следующие переменные ENV, прежде чем запустить сервер шлюза LLM:
OPENAI_API_KEY : ваш ключ API Openai. Пример: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : он должен иметь одно из значений здесь или здесь.OPENAI_EMBEDDINGS_MODEL : он должен иметь здесь одно из значений.OPENAI_IMAGE_CREATION_MODEL : У него должно быть одно из значений здесь. Теперь вы можете запустить команду sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local чтобы запустить шлюз LLM на локальном уровне. Вы можете изменить имя изображения через аргумент --image .
Эта команда выведет идентификатор контейнера Docker. Вы можете остановить контейнер, выполнив docker stop <CONTAINER_ID> .
Примеры
( Не забудьте экспортировать сначала все необходимые вам переменные среды )
В случае, если вы хотите создать изображение Docker, а затем запустить его
sagify llm gateway --image sagify-llm-gateway:v0.1.0 --start-local
Если вы хотите использовать просто построить изображение
sagify llm gateway --image sagify-llm-gateway:v0.1.0
Если вы хотите поддержать обе платформы (OpenAI и AWS SageMaker), пропустите все переменные ENV для обеих платформ.
Если вы хотите развернуть шлюз LLM в AWS Fargate, вы можете выполнить эти общие шаги:
Вот пример шаблона облачной информации для развертывания услуги FastAPI для AWS Fargate с 5 переменными среды:
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> Как только шлюз LLM будет развернут, вы можете получить к нему доступ к 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
} 'Примеры ответов
200 Ответ
{
"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"
]
} 'Примеры ответов
200 Ответ
{
"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"
} 'Примеры ответов
200 Ответ
{
"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 "
}
]
}Электронная почта: [email protected]
Мы поняли, что нет ни одного LLM, чтобы править их всеми!