يوفر Sagify واجهة مبسطة لإدارة سير عمل التعلم الآلي على AWS Sagemaker ، مما يساعدك على التركيز على بناء نماذج ML بدلاً من البنية التحتية. تتضمن بنيةها المعيارية وحدة بوابة LLM لتوفير واجهة موحدة للاستفادة من كل من نماذج اللغات الكبيرة المصدر والملكية. تتيح بوابة LLM الوصول إلى مختلف LLMs من خلال واجهة برمجة تطبيقات بسيطة ، مما يتيح لك دمجها بسهولة في سير العمل الخاص بك.
للحصول على إشارة مفصلة إلى Sagify ، يرجى الانتقال إلى: اقرأ المستندات
يتطلب 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 توربو | https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo |
لإنشاء الصور ، يمكنك الاعتماد على النماذج التالية:
| اسم النموذج | عنوان URL |
|---|---|
| دال E-3 | https://platform.openai.com/docs/models/dall-e |
| دال E-2 | https://platform.openai.com/docs/models/dall-e |
وللدمج:
| اسم النموذج | عنوان URL |
|---|---|
| embedding-3-large | https://platform.openai.com/docs/models/embeddings |
| النصوص النصية-3-small | 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-7 ب | 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 |
|---|---|
| ثباتي المستقرة-الانتشار-V2 | https://huggingface.co/Stableai/stable-diffusion-2 |
| ثباتي المستقرة-الاندفاع-V2-1-base | https://huggingface.co/Stableai/stable-diffusion-2-1-base |
| ثباتي المستقرة-الانتشار-V2-FP16 | https://huggingface.co/Stableai/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-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 |
| متعدد اللغات E5-large | https://huggingface.co/intfloat/multiplual-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 |
| قواعد متعددة اللغات | https://huggingface.co/intfloat/multilentual-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 التالية قبل بدء تشغيل خادم Gateway 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.
بمجرد إعداد منصة الواجهة الخلفية الخاصة بك ، يمكنك نشر بوابة Fastapi LLM محليًا.
في حالة استخدام منصة AWS Sagemaker ، تحتاج إلى تحديد متغيرات ENV التالية قبل بدء تشغيل خادم Gateway LLM:
AWS_ACCESS_KEY_ID : يمكن أن يكون نفس الشيء الذي تستخدمه محليًا للتغلب. يجب أن يكون لديه الوصول إلى Sagemaker و S3. مثال: export AWS_ACCESS_KEY_ID=...AWS_SECRET_ACCESS_KEY : يمكن أن يكون نفس الشيء الذي تستخدمه محليًا للتغلب. يجب أن يكون لديه الوصول إلى 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 حيث يتم نشر نموذج التضمين.SM_IMAGE_CREATION_MODEL : اسم نقطة نهاية Sagemaker حيث يتم نشر نموذج إنشاء الصور.في حالة استخدام منصة Openai ، تحتاج إلى تحديد متغيرات ENV التالية قبل بدء تشغيل خادم Gateway LLM:
OPENAI_API_KEY : مفتاح API Openai الخاص بك. مثال: export OPENAI_API_KEY=...OPENAI_CHAT_COMPLETIONS_MODEL : يجب أن يكون لها إحدى القيم هنا أو هنا.OPENAI_EMBEDDINGS_MODEL : يجب أن يكون لها إحدى القيم هنا.OPENAI_IMAGE_CREATION_MODEL : يجب أن يكون لها واحدة من القيم هنا. الآن ، يمكنك تشغيل Command 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 ، يمكنك اتباع هذه الخطوات العامة:
فيما يلي مثال على قالب CloudFormation لنشر خدمة 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 واحد لحكمهم جميعًا!