بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون

آمازون SageMaker یک سرویس کاملاً مدیریت شده است که توسعه دهندگان و دانشمندان داده را قادر می سازد تا به سرعت و بدون زحمت مدل های یادگیری ماشین (ML) را در هر مقیاسی بسازند، آموزش دهند و به کار گیرند. SageMaker استقرار مدل‌ها را مستقیماً از طریق تماس‌های API به سرویس به تولید آسان می‌کند. مدل ها برای استقرار قوی و مقیاس پذیر در ظروف بسته بندی می شوند. اگرچه نقاط ورودی مختلفی مانند SageMaker Python SDK، AWS SDK، کنسول SageMaker و Amazon SageMaker Studio نوت‌بوک‌ها برای ساده‌سازی فرآیند آموزش و استقرار مدل‌های ML در مقیاس، مشتریان همچنان به دنبال راه‌های بهتری برای استقرار مدل‌های خود برای آزمایش زمین بازی و بهینه‌سازی استقرار تولید هستند.

ما در حال راه اندازی دو راه جدید برای ساده سازی فرآیند بسته بندی و استقرار مدل ها با استفاده از SageMaker هستیم.

در این پست SageMaker Python SDK جدید را معرفی می کنیم ModelBuilder تجربه، که هدف آن به حداقل رساندن منحنی یادگیری برای کاربران جدید SageMaker مانند دانشمندان داده است، در حالی که به مهندسان باتجربه MLOps کمک می کند تا استفاده از خدمات میزبانی SageMaker را به حداکثر برسانند. این پیچیدگی راه اندازی و استقرار اولیه را کاهش می دهد و با ارائه راهنمایی در مورد بهترین شیوه ها برای استفاده از قابلیت های کامل SageMaker. ما اطلاعات دقیق و نمونه های GitHub را برای این قابلیت جدید SageMaker ارائه می دهیم.

راه اندازی جدید دیگر استفاده از تجربه استقرار تعاملی جدید در SageMaker Studio است. ما در این مورد در قسمت 2 بحث می کنیم.

استقرار مدل‌ها در یک نقطه پایانی SageMaker مستلزم یک سری مراحل برای آماده کردن مدل برای میزبانی در یک نقطه پایانی SageMaker است. این شامل گرفتن مصنوعات مدل در قالب و ساختار صحیح، ایجاد کد استنتاج، و مشخص کردن جزئیات ضروری مانند URL تصویر مدل، سرویس ذخیره سازی ساده آمازون (Amazon S3) مکان یابی مصنوعات مدل، مراحل سریال سازی و سریال سازی و ضروری است هویت AWS و مدیریت دسترسی نقش های (IAM) برای تسهیل مجوزهای دسترسی مناسب. به دنبال این، یک پیکربندی نقطه پایانی نیاز به تعیین نوع استنتاج و پیکربندی پارامترهای مربوطه مانند انواع نمونه، تعداد و توزیع ترافیک بین انواع مدل دارد.

برای کمک بیشتر به مشتریان خود در هنگام استفاده از هاست SageMaker، ما جدید را معرفی کردیم ModelBuilder کلاس در SageMaker Python SDK، که مزایای کلیدی زیر را هنگام استقرار مدل‌ها در نقاط پایانی SageMaker به ارمغان می‌آورد:

  • تجربه استقرار را در بین چارچوب ها یکسان می کند - تجربه جدید یک گردش کار ثابت برای استقرار مدل‌های ساخته شده با استفاده از چارچوب‌های مختلف مانند PyTorch، TensorFlow و XGBoost فراهم می‌کند. این روند استقرار را ساده می کند.
  • استقرار مدل را خودکار می کند - کارهایی مانند انتخاب کانتینرهای مناسب، گرفتن وابستگی ها، و مدیریت سریال/آسیبی سازی خودکار هستند و تلاش دستی مورد نیاز برای استقرار را کاهش می دهند.
  • انتقال آرام از محلی به نقطه پایانی میزبان SageMaker را فراهم می کند – با حداقل تغییرات کد، مدل ها را می توان به راحتی از آزمایش محلی به استقرار در نقطه پایانی SageMaker انتقال داد. لاگ های زنده اشکال زدایی را یکپارچه می کنند.

به طور کلی، SageMaker ModelBuilder فرآیند بسته‌بندی مدل را برای استنتاج SageMaker با مدیریت جزئیات سطح پایین ساده و ساده می‌کند و ابزارهایی برای آزمایش، اعتبارسنجی و بهینه‌سازی نقاط پایانی فراهم می‌کند. این کار بهره وری توسعه دهندگان را بهبود می بخشد و خطاها را کاهش می دهد.

در بخش‌های بعدی، به جزئیات این ویژگی جدید می‌پردازیم. ما همچنین در مورد نحوه استقرار مدل ها در میزبانی SageMaker با استفاده از آن صحبت می کنیم ModelBuilder، که فرآیند را ساده می کند. سپس چند نمونه را برای چارچوب‌های مختلف به شما معرفی می‌کنیم تا هم مدل‌های سنتی ML و هم مدل‌های پایه‌ای را که از موارد استفاده از هوش مصنوعی مولد نیرو می‌دهند، استفاده کنید.

آشنایی با SageMaker ModelBuilder

جدید ModelBuilder یک کلاس پایتون است که بر روی گرفتن مدل‌های ML ساخته شده با استفاده از چارچوب‌هایی مانند XGBoost یا PyTorch تمرکز دارد و آنها را به مدل‌هایی تبدیل می‌کند که برای استقرار در SageMaker آماده هستند. ModelBuilder فراهم می کند build() تابع، که مصنوعات را مطابق با سرور مدل تولید می کند، و a deploy() عملکردی برای استقرار به صورت محلی یا در یک نقطه پایانی SageMaker. معرفی این ویژگی ادغام مدل ها با محیط SageMaker را ساده می کند و آنها را برای عملکرد و مقیاس پذیری بهینه می کند. نمودار زیر نشان می دهد که چگونه ModelBuilder در سطح بالا کار می کند

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

کلاس ModelBuilder

La مدل ساز کلاس گزینه های مختلفی را برای سفارشی سازی ارائه می دهد. با این حال، برای استقرار مدل چارچوب، سازنده مدل فقط از مدل، ورودی، خروجی و نقش انتظار دارد:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

SchemaBuilder

La SchemaBuilder کلاس شما را قادر می سازد تا ورودی و خروجی را برای نقطه پایانی خود تعریف کنید. این به سازنده طرحواره اجازه می‌دهد تا توابع مارشال‌سازی متناظر را برای سریال‌سازی و جداسازی ورودی و خروجی تولید کند. فایل کلاس زیر تمام گزینه های سفارشی سازی را ارائه می دهد:

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

با این حال، در بیشتر موارد، فقط ورودی و خروجی نمونه کار می کند. مثلا:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

با ارائه نمونه ورودی و خروجی، SchemaBuilder می تواند به طور خودکار تحولات لازم را تعیین کند و روند ادغام را ساده تر کند. برای موارد استفاده پیشرفته‌تر، انعطاف‌پذیری برای ارائه توابع ترجمه سفارشی برای ورودی و خروجی وجود دارد که تضمین می‌کند ساختارهای داده پیچیده‌تر نیز می‌توانند به طور کارآمد مدیریت شوند. ما این را در بخش‌های بعدی با استفاده از مدل‌های مختلف با فریم‌ورک‌های مختلف نشان می‌دهیم ModelBuilder.

تجربه حالت محلی

در این مثال از ModelBuilder برای استقرار مدل XGBoost به صورت محلی. می توانید از Mode برای جابجایی بین تست محلی و استقرار به نقطه پایانی SageMaker استفاده کنید. ما ابتدا مدل XGBoost (به صورت محلی یا در SageMaker) را آموزش می دهیم و مصنوعات مدل را در دایرکتوری کاری ذخیره می کنیم:

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

سپس یک شی ModelBuilder با پاس دادن شی مدل واقعی یعنی the ایجاد می کنیم SchemaBuilder که از نمونه اشیاء ورودی و خروجی تست (همان ورودی و خروجی که هنگام آموزش و آزمایش مدل استفاده کردیم) برای استنباط سریال سازی مورد نیاز استفاده می کند. توجه داشته باشید که استفاده می کنیم Mode.LOCAL_CONTAINER برای تعیین استقرار محلی پس از آن، ما به ساختن عملکردی برای شناسایی خودکار تصویر ظرف فریمورک پشتیبانی شده و همچنین اسکن وابستگی ها. کد زیر را ببینید:

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

در نهایت، ما می توانیم تماس بگیرید deploy عملکرد در شی مدل، که همچنین گزارش زنده را برای اشکال زدایی آسان تر فراهم می کند. شما نیازی به تعیین نوع یا تعداد نمونه ندارید زیرا مدل به صورت محلی مستقر می شود. اگر این پارامترها را ارائه دهید، نادیده گرفته می شوند. این تابع شی پیش بینی را که می توانیم برای پیش بینی با داده های تست استفاده کنیم، برمی گرداند:

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

به صورت اختیاری، می توانید بارگذاری مدل و پیش پردازش و پس پردازش را نیز با استفاده از کنترل کنید InferenceSpec. جزئیات بیشتر را در ادامه این پست ارائه می دهیم. استفاده كردن LOCAL_CONTAINER یک راه عالی برای آزمایش اسکریپت خود به صورت محلی قبل از استقرار در نقطه پایانی SageMaker است.

به model-builder-xgboost.ipynb نمونه ای برای آزمایش استقرار هم به صورت محلی و هم در نقطه پایانی SageMaker با استفاده از ModelBuilder.

استقرار مدل‌های سنتی در نقاط پایانی SageMaker

در مثال های زیر نحوه استفاده را نشان می دهیم ModelBuilder برای استقرار مدل های سنتی ML.

مدل های XGBoost

مشابه بخش قبل، می توانید یک مدل XGBoost را با تغییر mode پارامتر هنگام ایجاد ModelBuilder هدف - شی:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

توجه داشته باشید که هنگام استقرار در نقاط پایانی SageMaker، باید نوع نمونه و تعداد نمونه را هنگام فراخوانی مشخص کنید. deploy تابع.

به model-builder-xgboost.ipynb مثال برای استقرار یک مدل XGBoost.

مدل های تریتون

شما می توانید ModelBuilder برای ارائه مدل های PyTorch در سرور استنتاج تریتون. برای آن، شما باید مشخص کنید model_server پارامتر به عنوان ModelServer.TRITON، یک مدل پاس کنید و یک SchemaBuilder شی، که به ورودی و خروجی نمونه از مدل نیاز دارد. ModelBuilder بقیه کارها را برای شما انجام خواهد داد.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

به مراجعه model-builder-triton.ipynb برای استقرار یک مدل با تریتون.

مدل های صورت در آغوش گرفته

در این مثال، ما به شما نشان می دهیم که چگونه یک مدل ترانسفورماتور از پیش آموزش دیده ارائه شده توسط Hugging Face را برای SageMaker پیاده سازی کنید. ما می خواهیم از چهره در آغوش گرفته استفاده کنیم pipeline برای بارگذاری مدل، بنابراین ما یک مشخصات استنتاج سفارشی برای آن ایجاد می کنیم ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

همچنین ورودی و خروجی حجم کار استنتاج را با تعریف کردن تعریف می کنیم SchemaBuilder شی بر اساس ورودی و خروجی مدل:

schema = SchemaBuilder(value,output)

سپس ما ایجاد می کنیم ModelBuilder شیء کنید و مدل را در نقطه پایانی SageMaker با همان منطقی که در مثال دیگر نشان داده شده است، مستقر کنید:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

به مراجعه model-builder-huggingface.ipynb برای استقرار مدل خط لوله Hugging Face.

استقرار مدل های پایه در نقاط پایانی SageMaker

در مثال های زیر نحوه استفاده را نشان می دهیم ModelBuilder برای استقرار مدل های پایه درست مانند مدل هایی که قبلا ذکر شد، تنها چیزی که مورد نیاز است شناسه مدل است.

هاب صورت در آغوش

اگر می خواهید یک مدل پایه از هاب صورت در آغوش، تنها کاری که باید انجام دهید این است که شناسه مدل از پیش آموزش دیده را ارسال کنید. به عنوان مثال، قطعه کد زیر را مستقر می کند متا لاما/Llama-2-7b-hf مدل محلی می توانید حالت را به Mode.SAGEMAKER_ENDPOINT برای استقرار در نقاط پایانی SageMaker.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

برای مدل‌های دروازه‌دار در Hugging Face Hub، باید از طریق Hugging Face Hub درخواست دسترسی کنید و از کلید مرتبط با عبور آن به عنوان متغیر محیطی استفاده کنید. HUGGING_FACE_HUB_TOKEN. برخی از مدل‌های «Huging Face» ممکن است نیاز به کد راه دور مطمئن داشته باشند. می توان آن را به عنوان یک متغیر محیطی و همچنین با استفاده از آن تنظیم کرد HF_TRUST_REMOTE_CODE. به صورت پیش فرض، ModelBuilder از استنباط نسل متن در آغوش گرفتن صورت استفاده خواهد کرد (TGI) ظرف به عنوان ظرف زیرین مدل های صورت در آغوش گرفته. اگر می خواهید از استنتاج مدل بزرگ AWS استفاده کنید (LMI) ظروف، می توانید راه اندازی کنید model_server پارامتر به عنوان ModelServer.DJL_SERVING هنگامی که شما پیکربندی کنید ModelBuilder هدف - شی.

یک ویژگی منظم از ModelBuilder توانایی اجرای تنظیم محلی پارامترهای کانتینر هنگام استفاده است LOCAL_CONTAINER حالت این قابلیت با اجرای ساده قابل استفاده است tuned_model = model.tune().

به مراجعه دمو-مدل-ساز-huggingface-llama2.ipynb برای استقرار یک مدل Hugging Face Hub.

SageMaker JumpStart

Amazon SageMaker JumpStart همچنین تعدادی مدل فونداسیون از قبل آموزش دیده را ارائه می دهد. درست مانند فرآیند استقرار یک مدل از Hugging Face Hub، شناسه مدل مورد نیاز است. استقرار یک مدل SageMaker JumpStart در یک نقطه پایانی SageMaker به اندازه اجرای کد زیر ساده است:

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

برای همه شناسه های مدل SageMaker JumpStart موجود، به مراجعه کنید الگوریتم های داخلی با جدول مدل از پیش آموزش دیده. رجوع شود به model-builder-jumpstart-falcon.ipynb برای استقرار یک مدل SageMaker JumpStart.

جزء استنتاج

ModelBulder به شما اجازه می دهد تا از قابلیت جدید مؤلفه استنتاج در SageMaker برای استقرار مدل ها استفاده کنید. برای اطلاعات بیشتر در مورد اجزای استنتاج، رجوع کنید به با استفاده از آخرین ویژگی های SageMaker، هزینه های استقرار مدل را تا 50 درصد به طور متوسط ​​کاهش دهید. می توانید از اجزای استنتاج برای استقرار با استفاده کنید ModelBuilder با مشخص کردن endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED در deploy() روش. شما همچنین می توانید استفاده کنید tune() روشی که تعداد بهینه شتاب دهنده ها را دریافت می کند و در صورت نیاز آن را اصلاح می کند.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

به مراجعه model-builder-inference-component.ipynb برای استقرار یک مدل به عنوان یک جزء استنتاج.

کلاس ModelBuilder را سفارشی کنید

La ModelBuilder class به شما امکان می دهد بارگذاری مدل را با استفاده از آن سفارشی کنید InferenceSpec.

علاوه بر این، می‌توانید سریال‌سازی بار و پاسخ و سریال‌زدایی را کنترل کنید و پیش‌پردازش و پس‌پردازش را با استفاده از CustomPayloadTranslator. علاوه بر این، هنگامی که نیاز دارید کانتینرهای از پیش ساخته شده ما را برای استقرار مدل در SageMaker گسترش دهید، می توانید از ModelBuilder برای رسیدگی به فرآیند بسته بندی مدل در این بخش، جزئیات بیشتری از این قابلیت ها ارائه می کنیم.

InferenceSpec

InferenceSpec یک لایه اضافی از سفارشی سازی را ارائه می دهد. این به شما امکان می دهد نحوه بارگذاری مدل و نحوه رسیدگی به درخواست های استنتاج ورودی را تعریف کنید. از طریق InferenceSpec، می توانید رویه های بارگذاری سفارشی را برای مدل های خود تعریف کنید و مکانیسم های بارگذاری پیش فرض را دور بزنید. این انعطاف پذیری به ویژه هنگام کار با مدل های غیر استاندارد یا خطوط لوله استنتاج سفارشی مفید است. روش فراخوانی را می توان سفارشی کرد و به شما این امکان را می دهد که نحوه پردازش درخواست های دریافتی (پیش پردازش و پس پردازش) توسط مدل را تنظیم کنید. این سفارشی‌سازی می‌تواند برای اطمینان از همسویی فرآیند استنتاج با نیازهای خاص مدل ضروری باشد. کد زیر را ببینید:

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

کد زیر نمونه ای از استفاده از این کلاس را نشان می دهد:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

CustomPayload Translator

هنگام فراخوانی نقاط پایانی SageMaker، داده ها از طریق بارهای HTTP با انواع مختلف MIME ارسال می شوند. برای مثال، تصویری که برای استنتاج به نقطه پایانی ارسال می‌شود باید در سمت مشتری به بایت تبدیل شود و از طریق بار HTTP به نقطه پایانی ارسال شود. هنگامی که نقطه پایانی بار بار را دریافت می کند، باید رشته بایت را به نوع داده ای که توسط مدل مورد انتظار است (همچنین به عنوان شناخته شده deserialization سمت سرور). پس از اتمام پیش‌بینی مدل، نتایج باید به بایت‌هایی سریال شوند که می‌توانند از طریق بار HTTP به کاربر یا مشتری ارسال شوند. وقتی مشتری داده‌های بایت پاسخ را دریافت می‌کند، برای تبدیل داده‌های بایت به فرمت داده‌های مورد انتظار، مانند JSON، باید سریال‌سازی سمت مشتری را انجام دهد. حداقل، شما باید داده ها را برای موارد زیر تبدیل کنید (همانطور که در نمودار زیر شماره گذاری شده است):

  1. سریال‌سازی درخواست استنتاج (که توسط مشتری انجام می‌شود)
  2. جداسازی درخواست استنتاج (که توسط سرور یا الگوریتم مدیریت می شود)
  3. فراخوانی مدل در برابر بار
  4. ارسال بار پاسخ به عقب
  5. سریال سازی پاسخ استنتاج (که توسط سرور یا الگوریتم مدیریت می شود)
  6. غیراصولی سازی پاسخ استنتاج (با مدیریت مشتری)

نمودار زیر روند سریال سازی و سریال زدایی را در طی فرآیند فراخوانی نشان می دهد.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

در قطعه کد زیر، نمونه ای از آن را نشان می دهیم CustomPayloadTranslator هنگامی که به سفارشی سازی اضافی برای رسیدگی به سریال سازی و سریال زدایی به ترتیب در سمت مشتری و سرور نیاز است:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

در demo-model-builder-pytorch.ipynb نوت بوک، ما نشان می دهیم که چگونه می توان به راحتی یک مدل PyTorch را با استفاده از یک نقطه پایانی SageMaker مستقر کرد ModelBuilder با CustomPayloadTranslator و InferenceSpec کلاس.

مدل مرحله برای استقرار

اگر می خواهید مدل را برای استنتاج یا در رجیستری مدل مرحله بندی کنید، می توانید استفاده کنید model.create() or model.register(). مدل فعال شده روی سرویس ایجاد می‌شود و بعداً می‌توانید آن را مستقر کنید. کد زیر را ببینید:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

از ظروف سفارشی استفاده کنید

SageMaker فراهم می کند تصاویر Docker از پیش ساخته شده برای الگوریتم های داخلی و چارچوب های یادگیری عمیق پشتیبانی شده که برای آموزش و استنتاج استفاده می شود. اگر کانتینر SageMaker از پیش ساخته شده همه نیازهای شما را برآورده نمی کند، می توانید تصویر موجود را گسترش دهید تا نیازهای شما را برآورده کند. با گسترش یک تصویر از پیش ساخته شده، می‌توانید از کتابخانه‌ها و تنظیمات یادگیری عمیق بدون نیاز به ایجاد تصویر از ابتدا استفاده کنید. برای جزئیات بیشتر در مورد نحوه گسترش کانتینرهای از پیش ساخته شده، به سند SageMaker مراجعه کنید. ModelBuilder از موارد استفاده در هنگام آوردن کانتینرهای خود که از ظروف Docker از پیش ساخته شده ما ساخته شده اند پشتیبانی می کند.

برای استفاده از تصویر ظرف خود در این مورد، باید فیلدها را تنظیم کنید image_uri و model_server هنگام تعریف ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

اینجا image_uri تصویر ظرف ARN خواهد بود که در حساب شما ذخیره می شود رجیستری ظروف الاستیک آمازون مخزن (Amazon ECR). یک مثال به صورت زیر نشان داده شده است:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

هنگامی که image_uri تنظیم شده است، در طول ModelBuilder فرآیند ساخت، از تشخیص خودکار تصویر با ارائه URI تصویر صرفنظر می کند. اگر model_server در ModelBuilder تنظیم نشده است، یک پیام خطای اعتبارسنجی دریافت خواهید کرد، به عنوان مثال:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

تا زمان انتشار این پست، ModelBuilder از آوردن ظروف خود که از ما گسترش یافته اند پشتیبانی می کند تصاویر کانتینر DLC از پیش ساخته شده یا ظروف ساخته شده با سرورهای مدل مانند کتابخانه عمیق جاوا (DJL), استنتاج تولید متن (TGI), TorchServeو سرور استنتاج تریتون.

وابستگی های سفارشی

هنگام دویدن ModelBuilder.build()، به طور پیش فرض به طور خودکار محیط پایتون شما را در a می گیرد requirements.txt فایل و همان وابستگی را در کانتینر نصب می کند. با این حال، گاهی اوقات محیط پایتون محلی شما با محیط موجود در کانتینر در تضاد است. ModelBuilder راه ساده ای را برای شما فراهم می کند تا وابستگی های ضبط شده را اصلاح کنید تا این گونه تعارضات وابستگی را برطرف کنید و به شما امکان می دهد پیکربندی های سفارشی خود را در ModelBuilder. توجه داشته باشید که این فقط برای TorchServe و Triton با است InferenceSpec. برای مثال، می‌توانید وابستگی‌های پارامتر ورودی را که یک فرهنگ لغت پایتون است، در ModelBuilder به صورت زیر مشخص کنید:

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

فیلدهای زیر را تعریف می کنیم:

  • خودکار - آیا سعی کنید به طور خودکار وابستگی های موجود در محیط خود را ضبط کنید.
  • مقررات - رشته ای از مسیری که به سمت خودتان می رود requirements.txt فایل. (این اختیاری است.)
  • سفارشی – فهرستی از هر وابستگی سفارشی دیگری که می‌خواهید اضافه یا تغییر دهید. (این اختیاری است.)

اگر همان ماژول در چندین مکان مشخص شده باشد، custom پس از آن بالاترین اولویت را خواهد داشت requirementsو auto کمترین اولویت را خواهد داشت به عنوان مثال، بیایید بگوییم که در حین تشخیص خودکار، ModelBuilder تشخیص می دهد numpy==1.25و requirements.txt فایل ارائه شده است که مشخص می کند numpy>=1.24,<1.26. علاوه بر این، یک وابستگی سفارشی وجود دارد: custom = ["numpy==1.26.1"]. در این مورد، numpy==1.26.1 زمانی انتخاب می شود که وابستگی ها را در کانتینر نصب کنیم.

پاک کردن

وقتی آزمایش مدل‌ها را تمام کردید، به عنوان بهترین روش، نقطه پایانی را حذف کنید تا در صورت عدم نیاز به نقطه پایانی در هزینه‌ها صرفه‌جویی کنید. می توانید دنبال کنید پاک کردن بخش در هر یک از نوت بوک های آزمایشی یا از کد زیر برای حذف مدل و نقطه پایانی ایجاد شده توسط دمو استفاده کنید:

predictor.delete_model()
predictor.delete_endpoint()

نتیجه

قابلیت جدید SageMaker ModelBuilder فرآیند استقرار مدل های ML را برای تولید در SageMaker ساده می کند. با مدیریت بسیاری از جزئیات پیچیده در پشت صحنه، ModelBuilder منحنی یادگیری را برای کاربران جدید کاهش می دهد و استفاده را برای کاربران با تجربه به حداکثر می رساند. تنها با چند خط کد، می‌توانید مدل‌هایی با چارچوب‌های داخلی مانند XGBoost، PyTorch، Triton، و Hugging Face و همچنین مدل‌های ارائه‌شده توسط SageMaker JumpStart را در نقاط پایانی قوی و مقیاس‌پذیر در SageMaker مستقر کنید.

ما همه کاربران SageMaker را تشویق می کنیم تا با مراجعه به این قابلیت جدید را امتحان کنند مدل ساز صفحه مستندات ModelBuilder در حال حاضر برای همه کاربران SageMaker بدون هزینه اضافی در دسترس است. از این گردش کار ساده استفاده کنید تا مدل‌های خود را سریع‌تر اجرا کنید. ما مشتاقانه منتظریم تا بشنویم که ModelBuilder چگونه چرخه عمر توسعه مدل شما را تسریع می کند!

تشکر ویژه از سیریشا اوپادیایالا، ریموند لیو، گری وانگ، داوال پاتل، دیپاک گارگ و رام وگیراجو.


درباره نویسندگان

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.ملانی لیدکترا، یک متخصص ارشد AI/ML TAM در AWS مستقر در سیدنی، استرالیا است. او به مشتریان سازمانی کمک می کند تا راه حل هایی را با استفاده از ابزارهای پیشرفته AI/ML در AWS بسازند و راهنمایی هایی را در مورد معماری و اجرای راه حل های ML با بهترین شیوه ها ارائه می دهد. او در اوقات فراغت خود عاشق کشف طبیعت و گذراندن وقت با خانواده و دوستان است.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.مارک کارپ یک معمار ML با تیم Amazon SageMaker Service است. او بر کمک به مشتریان در طراحی، استقرار و مدیریت حجم کاری ML در مقیاس تمرکز دارد. او در اوقات فراغت خود از سفر و کاوش در مکان های جدید لذت می برد.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.سام ادواردز، یک مهندس ابر (AI/ML) در AWS Sydney متخصص در یادگیری ماشین و Amazon SageMaker است. او مشتاق کمک به مشتریان در حل مسائل مربوط به گردش کار یادگیری ماشین و ایجاد راه حل های جدید برای آنها است. در خارج از محل کار، او از ورزش راکت و مسافرت لذت می برد.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.راغو رامشا یک معمار ارشد راه حل های ML با تیم خدمات آمازون SageMaker است. او بر کمک به مشتریان در ساخت، استقرار و انتقال بارهای کاری تولید ML به SageMaker در مقیاس متمرکز است. او در زمینه های یادگیری ماشین، هوش مصنوعی و بینایی کامپیوتر تخصص دارد و دارای مدرک کارشناسی ارشد در علوم کامپیوتر از UT Dallas است. در اوقات فراغت از مسافرت و عکاسی لذت می برد.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.شیوا رااج کوتینی به عنوان مدیر محصول اصلی در مجموعه محصولات استنباط آمازون SageMaker کار می کند. او برای استنتاج بر روی استقرار مدل، تنظیم عملکرد و بهینه سازی در SageMaker تمرکز می کند.

بسته بندی و استقرار ML و LLM های کلاسیک به راحتی با Amazon SageMaker، قسمت 1: PySDK Improvements | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.موهان گاندی مهندس نرم افزار ارشد در AWS است. او در 10 سال گذشته با AWS کار کرده و روی سرویس های مختلف AWS مانند EMR، EFA و RDS کار کرده است. در حال حاضر، او بر روی بهبود تجربه استنتاج SageMaker متمرکز شده است. در اوقات فراغت خود از پیاده روی و ماراتن لذت می برد.

تمبر زمان:

بیشتر از آموزش ماشین AWS