Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز

جنریٹو AI مختلف صنعتوں بشمول تفریح، اشتہارات اور گرافک ڈیزائن میں تخلیقی عمل کو بڑھانے اور تیز کرنے کے لیے ایک عام ٹول بن گیا ہے۔ یہ سامعین کے لیے مزید ذاتی نوعیت کے تجربات کو قابل بناتا ہے اور حتمی مصنوعات کے مجموعی معیار کو بہتر بناتا ہے۔

جنریٹیو AI کا ایک اہم فائدہ صارفین کے لیے منفرد اور ذاتی نوعیت کے تجربات پیدا کرنا ہے۔ مثال کے طور پر، جنریٹو AI کا استعمال سٹریمنگ سروسز کے ذریعے ذاتی نوعیت کے فلمی عنوانات اور بصری تخلیق کرنے کے لیے کیا جاتا ہے تاکہ ناظرین کی مصروفیت کو بڑھایا جا سکے اور صارف کی دیکھنے کی تاریخ اور ترجیحات کی بنیاد پر عنوانات کے لیے بصری تیار کیا جا سکے۔ اس کے بعد سسٹم ٹائٹل کے آرٹ ورک کے ہزاروں تغیرات پیدا کرتا ہے اور ان کی جانچ کرتا ہے تاکہ یہ تعین کیا جا سکے کہ کون سا ورژن سب سے زیادہ صارف کی توجہ اپنی طرف کھینچتا ہے۔ کچھ معاملات میں، ذاتی نوعیت کے آرٹ ورک کے بغیر شوز کے مقابلے TV سیریز کے لیے ذاتی نوعیت کے آرٹ ورک نے کلک ہونے کی شرحوں اور دیکھنے کی شرحوں میں نمایاں اضافہ کیا۔

اس پوسٹ میں، ہم یہ ظاہر کرتے ہیں کہ آپ کس طرح جنریٹو AI ماڈلز جیسے اسٹیبل ڈفیوژن کو ذاتی نوعیت کا اوتار حل بنانے کے لیے استعمال کر سکتے ہیں۔ ایمیزون سیج میکر اور ایک ہی وقت میں ملٹی ماڈل اینڈ پوائنٹس (MMEs) کے ساتھ تخمینہ لاگت کو بچائیں۔ حل یہ ظاہر کرتا ہے کہ کس طرح، اپنی 10-12 تصاویر اپ لوڈ کر کے، آپ ایک ذاتی نوعیت کے ماڈل کو ٹھیک بنا سکتے ہیں جو پھر کسی بھی ٹیکسٹ پرامپٹ کی بنیاد پر اوتار بنا سکتا ہے، جیسا کہ درج ذیل اسکرین شاٹس میں دکھایا گیا ہے۔ اگرچہ یہ مثال ذاتی نوعیت کے اوتار تیار کرتی ہے، لیکن آپ مخصوص اشیاء یا طرزوں پر فائن ٹیوننگ کرکے اس تکنیک کو کسی بھی تخلیقی آرٹ کی نسل پر لاگو کرسکتے ہیں۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

حل جائزہ

مندرجہ ذیل آرکیٹیکچر ڈایاگرام ہمارے اوتار جنریٹر کے لیے آخر سے آخر تک حل کا خاکہ پیش کرتا ہے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

اس پوسٹ کا دائرہ کار اور مثال گٹ ہب کوڈ ہم صرف ماڈل ٹریننگ اور انفرنس آرکیسٹریشن پر فوکس کرتے ہیں (پچھلے ڈایاگرام میں گرین سیکشن)۔ آپ مکمل حل فن تعمیر کا حوالہ دے سکتے ہیں اور جو مثال ہم فراہم کرتے ہیں اس کے اوپری حصے پر بنا سکتے ہیں۔

ماڈل ٹریننگ اور انفرنس کو چار مراحل میں تقسیم کیا جا سکتا ہے:

  1. پر تصاویر اپ لوڈ کریں۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔ اس مرحلے میں، ہم آپ سے اپنی کم از کم 10 ہائی ریزولوشن تصاویر فراہم کرنے کو کہتے ہیں۔ جتنی زیادہ تصاویر، نتیجہ اتنا ہی بہتر، لیکن تربیت میں اتنا ہی زیادہ وقت لگے گا۔
  2. SageMaker غیر مطابقت پذیر تخمینہ کا استعمال کرتے ہوئے ایک مستحکم ڈفیوژن 2.1 بیس ماڈل کو ٹھیک بنائیں۔ ہم بعد میں اس پوسٹ میں ٹریننگ کے لیے ایک انفرنس اینڈ پوائنٹ کو استعمال کرنے کے استدلال کی وضاحت کرتے ہیں۔ فائن ٹیوننگ کا عمل تصاویر کی تیاری کے ساتھ شروع ہوتا ہے، بشمول چہرے کی کٹائی، پس منظر کی تبدیلی، اور ماڈل کے لیے سائز تبدیل کرنا۔ پھر ہم ماڈل کو ٹھیک کرنے کے لیے لو رینک اڈاپٹیشن (LoRA) کا استعمال کرتے ہیں، جو کہ بڑے لینگویج ماڈلز (LLMs) کے لیے پیرامیٹر سے موثر فائن ٹیوننگ تکنیک ہے۔ آخر میں، پوسٹ پروسیسنگ میں، ہم انفرنس اسکرپٹ اور کنفیگریشن فائلز (tar.gz) کے ساتھ فائن ٹیونڈ LoRA وزن کو پیک کرتے ہیں اور SageMaker MMEs کے لیے S3 بالٹی والے مقام پر اپ لوڈ کرتے ہیں۔
  3. GPU کے ساتھ SageMaker MMEs کا استعمال کرتے ہوئے ٹھیک ٹیونڈ ماڈلز کی میزبانی کریں۔ SageMaker ایمیزون S3 مقام سے ماڈل کو متحرک طور پر لوڈ اور کیش کرے گا جس کی بنیاد پر ہر ماڈل کے لیے انفرنس ٹریفک ہے۔
  4. اندازہ لگانے کے لیے ٹھیک ٹیونڈ ماڈل کا استعمال کریں۔ کے بعد ایمیزون سادہ نوٹیفکیشن سروس (ایمیزون ایس این ایس) نوٹیفکیشن جس میں ٹھیک ٹیوننگ کی نشاندہی کی گئی ہے بھیجی گئی ہے، آپ فوری طور پر اس ماڈل کو فراہم کر کے استعمال کر سکتے ہیں۔ target_model پیرامیٹر جب آپ کا اوتار بنانے کے لیے ایم ایم ای کو طلب کریں۔

ہم مندرجہ ذیل حصوں میں ہر قدم کو مزید تفصیل سے بیان کرتے ہیں اور نمونے کے کوڈ کے کچھ ٹکڑوں کو دیکھتے ہیں۔

تصاویر تیار کریں۔

اپنی تصاویر بنانے کے لیے فائن ٹیوننگ سٹیبل ڈفیوژن سے بہترین نتائج حاصل کرنے کے لیے، آپ کو عام طور پر مختلف زاویوں سے، مختلف تاثرات کے ساتھ، اور مختلف پس منظر میں اپنی تصاویر کی ایک بڑی مقدار اور مختلف قسم فراہم کرنے کی ضرورت ہوتی ہے۔ تاہم، ہمارے نفاذ کے ساتھ، آپ اب کم از کم 10 ان پٹ امیجز کے ساتھ اعلیٰ معیار کا نتیجہ حاصل کر سکتے ہیں۔ ہم نے ہر تصویر سے آپ کا چہرہ نکالنے کے لیے خودکار پری پروسیسنگ بھی شامل کی ہے۔ آپ کو صرف اس بات کے جوہر کو حاصل کرنے کی ضرورت ہے کہ آپ متعدد نقطہ نظر سے واضح طور پر کیسے نظر آتے ہیں۔ سامنے والی تصویر، ہر طرف سے پروفائل شاٹ، اور درمیان کے زاویوں سے تصاویر شامل کریں۔ آپ کو چہرے کے مختلف تاثرات کے ساتھ تصاویر بھی شامل کرنی چاہئیں جیسے مسکراہٹ، جھنجھلاہٹ، اور غیر جانبدار اظہار۔ تاثرات کا مرکب ہونا ماڈل کو آپ کے چہرے کی منفرد خصوصیات کو بہتر طریقے سے دوبارہ پیش کرنے کی اجازت دے گا۔ ان پٹ امیجز اوتار کے معیار کا تعین کرتی ہیں جسے آپ تیار کر سکتے ہیں۔ اس بات کو یقینی بنانے کے لیے کہ یہ صحیح طریقے سے ہوا ہے، ہم تصویر کی گرفت اور اپ لوڈ کے عمل میں صارف کی رہنمائی کے لیے ایک بدیہی فرنٹ اینڈ UI تجربہ تجویز کرتے ہیں۔

چہرے کے مختلف تاثرات کے ساتھ مختلف زاویوں پر سیلفی کی تصاویر مندرجہ ذیل ہیں۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

ایک مستحکم ڈفیوژن ماڈل کو ٹھیک بنائیں

امیزون S3 پر امیجز اپ لوڈ ہونے کے بعد، ہم اس کو طلب کر سکتے ہیں۔ سیج میکر غیر مطابقت پذیر تخمینہ ہمارا تربیتی عمل شروع کرنے کے لیے اختتامی نقطہ۔ غیر مطابقت پذیر اختتامی نقطوں کا مقصد بڑے پے لوڈز (1 جی بی تک) اور طویل پروسیسنگ اوقات (1 گھنٹے تک) کے استعمال کے معاملات کے لیے ہے۔ یہ سیج میکر ہوسٹنگ کی دیگر مقامی خصوصیات جیسے آٹو اسکیلنگ کے علاوہ درخواستوں کو قطار میں کھڑا کرنے کے لیے ایک بلٹ ان قطار بنانے کا طریقہ کار، اور Amazon SNS کے ذریعے کام کی تکمیل کا نوٹیفکیشن میکانزم بھی فراہم کرتا ہے۔

اگرچہ فائن ٹیوننگ کوئی نتیجہ استعمال کرنے کا معاملہ نہیں ہے، لیکن ہم نے اسے یہاں سیج میکر کی تربیتی ملازمتوں کے بدلے استعمال کرنے کا انتخاب کیا ہے کیونکہ اس کے اندر موجود قطار اور نوٹیفکیشن میکانزم اور منظم آٹو اسکیلنگجس میں سروس کے استعمال میں نہ ہونے کی صورت میں 0 واقعات کو کم کرنے کی صلاحیت بھی شامل ہے۔ یہ ہمیں بڑی تعداد میں ہم وقت ساز صارفین تک آسانی سے فائن ٹیوننگ سروس کی پیمائش کرنے کی اجازت دیتا ہے اور اضافی اجزاء کو لاگو کرنے اور ان کا نظم کرنے کی ضرورت کو ختم کرتا ہے۔ تاہم، یہ 1 GB پے لوڈ اور 1 گھنٹہ زیادہ سے زیادہ پروسیسنگ وقت کی خرابی کے ساتھ آتا ہے۔ ہماری جانچ میں، ہم نے پایا کہ ml.g20x بڑی مثال پر تقریباً 10 ان پٹ تصاویر کے ساتھ معقول حد تک اچھے نتائج حاصل کرنے کے لیے 5.2 منٹ کافی وقت ہے۔ تاہم، سیج میکر کی تربیت بڑے پیمانے پر فائن ٹیوننگ ملازمتوں کے لیے تجویز کردہ طریقہ ہوگی۔

غیر مطابقت پذیر اختتامی نقطہ کی میزبانی کرنے کے لیے، ہمیں کئی مراحل کو مکمل کرنا ہوگا۔ سب سے پہلے ہمارے ماڈل سرور کی وضاحت کرنا ہے۔ اس پوسٹ کے لیے، ہم استعمال کرتے ہیں۔ بڑا ماڈل انفرنس کنٹینر (LMI)۔ LMI DJL سرونگ کے ذریعے تقویت یافتہ ہے، جو ایک اعلیٰ کارکردگی، پروگرامنگ لینگویج-ایگنوسٹک ماڈل سرونگ سلوشن ہے۔ ہم نے اس اختیار کا انتخاب کیا کیونکہ سیج میکر کے زیر انتظام انفرنس کنٹینر میں پہلے سے ہی بہت سی تربیتی لائبریریاں موجود ہیں جن کی ہمیں ضرورت ہے، جیسے ہیگنگ فیس ڈفیوزر۔ اور تیز. یہ ہمارے فائن ٹیوننگ کام کے لیے کنٹینر کو اپنی مرضی کے مطابق بنانے کے لیے درکار کام کی مقدار کو بہت کم کر دیتا ہے۔

درج ذیل کوڈ کا ٹکڑا LMI کنٹینر کا وہ ورژن دکھاتا ہے جسے ہم نے اپنی مثال میں استعمال کیا ہے۔

inference_image_uri = ( f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.3-cu117"
)
print(f"Image going to be used is ---- > {inference_image_uri}")

اس کے علاوہ، ہمیں ایک کی ضرورت ہے serving.properties فائل جو سرونگ پراپرٹیز کو ترتیب دیتی ہے، بشمول استعمال کرنے کے لیے انفرنس انجن، ماڈل آرٹفیکٹ کا مقام، اور ڈائنامک بیچنگ۔ آخر میں، ہمارے پاس ایک ہونا ضروری ہے model.py فائل جو ماڈل کو انفرنس انجن میں لوڈ کرتی ہے اور ماڈل سے ڈیٹا ان پٹ اور آؤٹ پٹ تیار کرتی ہے۔ ہماری مثال میں، ہم استعمال کرتے ہیں model.py فائن ٹیوننگ جاب کو اسپن کرنے کے لیے فائل، جس کی ہم بعد کے حصے میں مزید تفصیل سے وضاحت کرتے ہیں۔ دونوں serving.properties اور model.py میں فائلیں فراہم کی جاتی ہیں۔ training_service فولڈر.

ہمارے ماڈل سرور کی وضاحت کرنے کے بعد اگلا مرحلہ ایک اینڈ پوائنٹ کنفیگریشن بنانا ہے جو اس بات کی وضاحت کرتا ہے کہ ہمارا غیر مطابقت پذیر تخمینہ کیسے پیش کیا جائے گا۔ ہماری مثال کے طور پر، ہم صرف زیادہ سے زیادہ ہم آہنگی کی درخواست کی حد اور آؤٹ پٹ S3 مقام کی وضاحت کر رہے ہیں۔ کے ساتہ ml.g5.2xlarge مثال کے طور پر، ہم نے محسوس کیا ہے کہ ہم میموری سے باہر (OOM) استثناء کا سامنا کیے بغیر بیک وقت دو ماڈلز کو ٹھیک کرنے کے قابل ہیں، اور اس لیے ہم نے سیٹ max_concurrent_invocations_per_instance اس نمبر کو ایڈجسٹ کرنے کی ضرورت ہو سکتی ہے اگر ہم ٹیوننگ پیرامیٹرز کا ایک مختلف سیٹ یا چھوٹی مثال کی قسم استعمال کر رہے ہیں۔ ہم اسے ابتدائی طور پر 2 پر سیٹ کرنے اور GPU میموری کے استعمال کی نگرانی کرنے کی تجویز کرتے ہیں۔ ایمیزون کلاؤڈ واچ.

# create async endpoint configuration
async_config = AsyncInferenceConfig( output_path=f"s3://{bucket}/{s3_prefix}/async_inference/output" , # Where our results will be stored max_concurrent_invocations_per_instance=2, notification_config={   "SuccessTopic": "...",   "ErrorTopic": "...", }, #  Notification configuration
)

آخر میں، ہم ایک SageMaker ماڈل بناتے ہیں جو کنٹینر کی معلومات، ماڈل فائلز، اور پیکج کرتا ہے۔ AWS شناخت اور رسائی کا انتظام (IAM) ایک ہی شے میں کردار۔ ماڈل کو اینڈ پوائنٹ کنفیگریشن کا استعمال کرتے ہوئے تعینات کیا گیا ہے جس کی ہم نے پہلے وضاحت کی تھی۔

model = Model( image_uri=image_uri, model_data=model_data, role=role, env=env
) model.deploy( initial_instance_count=1, instance_type=instance_type, endpoint_name=endpoint_name, async_inference_config=async_inference_config
) predictor = sagemaker.Predictor( endpoint_name=endpoint_name, sagemaker_session=sagemaker_session
)

جب اختتامی نقطہ تیار ہو جاتا ہے، تو ہم ذیلی نمونہ کوڈ کا استعمال غیر مطابقت پذیر اختتامی نقطہ کو شروع کرنے اور فائن ٹیوننگ کا عمل شروع کرنے کے لیے کرتے ہیں:

sm_runtime = boto3.client("sagemaker-runtime") input_s3_loc = sess.upload_data("data/jw.tar.gz", bucket, s3_prefix) response = sm_runtime.invoke_endpoint_async( EndpointName=sd_tuning.endpoint_name, InputLocation=input_s3_loc)

SageMaker پر LMI کے بارے میں مزید تفصیلات کے لیے، رجوع کریں۔ DJLServing اور DeepSpeed ​​ماڈل کے متوازی اندازہ کا استعمال کرتے ہوئے Amazon SageMaker پر بڑے ماڈلز تعینات کریں۔.

درخواست کے بعد، غیر مطابقت پذیر اختتامی نقطہ ہمارے فائن ٹیوننگ کام کو قطار میں کھڑا کرنا شروع کر دیتا ہے۔ ہر کام درج ذیل مراحل سے گزرتا ہے: تصاویر تیار کریں، ڈریم بوتھ اور LoRA فائن ٹیوننگ انجام دیں، اور نمونے کے نمونے تیار کریں۔ آئیے فائن ٹیوننگ کے عمل میں مزید گہرائی میں جائیں۔

تصاویر تیار کریں۔

جیسا کہ ہم نے پہلے ذکر کیا ہے، ان پٹ امیجز کا معیار براہ راست فائن ٹیونڈ ماڈل کے معیار کو متاثر کرتا ہے۔ اوتار کے استعمال کے کیس کے لیے، ہم چاہتے ہیں کہ ماڈل چہرے کی خصوصیات پر توجہ مرکوز کرے۔ صارفین سے درست سائز اور مواد کی احتیاط سے تیار کردہ تصاویر فراہم کرنے کی ضرورت کے بجائے، ہم اس بوجھ کو کم کرنے کے لیے کمپیوٹر ویژن تکنیک کا استعمال کرتے ہوئے ایک پری پروسیسنگ مرحلہ نافذ کرتے ہیں۔ پری پروسیسنگ مرحلے میں، ہم سب سے پہلے ہر تصویر میں سب سے بڑے چہرے کو الگ کرنے کے لیے چہرے کا پتہ لگانے والا ماڈل استعمال کرتے ہیں۔ پھر ہم اپنے ماڈل کے لیے تصویر کو 512 x 512 پکسلز کے مطلوبہ سائز میں کراپ اور پیڈ کرتے ہیں۔ آخر میں، ہم پس منظر سے چہرے کو الگ کرتے ہیں اور پس منظر کی بے ترتیب تغیرات شامل کرتے ہیں۔ اس سے چہرے کی خصوصیات کو نمایاں کرنے میں مدد ملتی ہے، جس سے ہمارے ماڈل کو پس منظر کے بجائے چہرے سے ہی سیکھنے کا موقع ملتا ہے۔ مندرجہ ذیل تصاویر اس عمل کے تین مراحل کو واضح کرتی ہیں۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی
1 مرحلہ: کمپیوٹر وژن کا استعمال کرتے ہوئے چہرے کا پتہ لگانا 2 مرحلہ: تصویر کو تراشیں اور 512 x 512 پکسلز پر پیڈ کریں۔ مرحلہ 3 (اختیاری): سیگمنٹ کریں اور پس منظر کی تبدیلی شامل کریں۔

ڈریم بوتھ اور LoRA فائن ٹیوننگ

فائن ٹیوننگ کے لیے، ہم نے ڈریم بوتھ اور LoRA کی تکنیکوں کو ملایا۔ ڈریم بوتھ آپ کو اپنے اسٹیبل ڈفیوژن ماڈل کو ذاتی نوعیت کا بنانے کی اجازت دیتا ہے، ایک منفرد شناخت کنندہ کا استعمال کرتے ہوئے ماڈل کے آؤٹ پٹ ڈومین میں ایک موضوع کو سرایت کرتا ہے اور ماڈل کی لینگویج ویژن ڈکشنری کو بڑھاتا ہے۔ یہ ایک طریقہ استعمال کرتا ہے جسے کہا جاتا ہے۔ پیشگی تحفظ مضمون کی کلاس کے ماڈل کے معنوی علم کو محفوظ رکھنے کے لیے، اس صورت میں ایک شخص، اور کلاس میں موجود دیگر اشیاء کو حتمی امیج آؤٹ پٹ کو بہتر بنانے کے لیے استعمال کریں۔ اس طرح ڈریم بوتھ موضوع کی صرف چند ان پٹ تصاویر کے ساتھ اعلیٰ معیار کے نتائج حاصل کر سکتا ہے۔

درج ذیل کوڈ کا ٹکڑا ہمارے ان پٹ کو دکھاتا ہے۔ trainer.py ہمارے اوتار حل کے لیے کلاس۔ غور کریں کہ ہم نے انتخاب کیا۔ <<TOK>> منفرد شناخت کنندہ کے طور پر۔ یہ جان بوجھ کر کسی ایسے نام کو منتخب کرنے سے بچنے کے لیے کیا گیا ہے جو ماڈل کی لغت میں پہلے سے موجود ہو۔ اگر نام پہلے سے موجود ہے تو، ماڈل کو اس موضوع کو سیکھنا اور پھر دوبارہ سیکھنا پڑتا ہے، جس سے فائن ٹیوننگ کے خراب نتائج برآمد ہو سکتے ہیں۔ مضمون کی کلاس مقرر ہے۔ “a photo of person”جو کہ پہلے لوگوں کی تصاویر بنا کر پہلے سے محفوظ کرنے کے قابل بناتا ہے تاکہ فائن ٹیوننگ کے عمل کے دوران اضافی ان پٹ کے طور پر فیڈ کیا جا سکے۔ اس سے اوور فٹنگ کو کم کرنے میں مدد ملے گی کیونکہ ماڈل پہلے سے محفوظ کرنے کا طریقہ استعمال کرتے ہوئے کسی شخص کے سابقہ ​​علم کو محفوظ رکھنے کی کوشش کرتا ہے۔

status = trn.run(base_model="stabilityai/stable-diffusion-2-1-base", resolution=512, n_steps=1000, concept_prompt="photo of <<TOK>>", # << unique identifier of the subject learning_rate=1e-4, gradient_accumulation=1, fp16=True, use_8bit_adam=True, gradient_checkpointing=True, train_text_encoder=True, with_prior_preservation=True, prior_loss_weight=1.0, class_prompt="a photo of person", # << subject class num_class_images=50, class_data_dir=class_data_dir, lora_r=128, lora_alpha=1, lora_bias="none", lora_dropout=0.05, lora_text_encoder_r=64, lora_text_encoder_alpha=1, lora_text_encoder_bias="none", lora_text_encoder_dropout=0.05
)

کنفیگریشن میں میموری بچانے کے متعدد آپشنز کو فعال کیا گیا ہے، بشمول fp16, use_8bit_adam، اور تدریجی جمع۔ یہ میموری فوٹ پرنٹ کو 12 جی بی سے کم کر دیتا ہے، جو ایک ساتھ دو ماڈلز تک کو ٹھیک کرنے کی اجازت دیتا ہے۔ ml.g5.2xlarge مثال.

LoRA LLMs کے لیے ایک موثر فائن ٹیوننگ تکنیک ہے جو زیادہ تر وزن کو منجمد کر دیتی ہے اور پہلے سے تربیت یافتہ LLM کی مخصوص تہوں کے ساتھ ایک چھوٹے اڈاپٹر نیٹ ورک کو جوڑ دیتی ہے، جس سے تیز تر تربیت اور بہتر اسٹوریج کی سہولت ملتی ہے۔ اسٹیبل ڈفیوژن کے لیے، اڈاپٹر ٹیکسٹ انکوڈر اور انفرنس پائپ لائن کے U-Net اجزاء سے منسلک ہوتا ہے۔ ٹیکسٹ انکوڈر ان پٹ پرامپٹ کو ایک اویکت جگہ میں تبدیل کرتا ہے جسے U-Net ماڈل کے ذریعے سمجھا جاتا ہے، اور U-Net ماڈل بعد کے پھیلاؤ کے عمل میں تصویر بنانے کے لیے اویکت معنی کا استعمال کرتا ہے۔ ٹھیک ٹیوننگ کی پیداوار صرف ہے text_encoder اور U-Net اڈاپٹر کا وزن۔ تخمینہ کے وقت، ان وزنوں کو بیس اسٹیبل ڈفیوژن ماڈل سے دوبارہ جوڑا جا سکتا ہے تاکہ فائن ٹیوننگ کے نتائج کو دوبارہ پیش کیا جا سکے۔

ذیل کے اعداد و شمار اصل مصنف کے ذریعہ فراہم کردہ LoRA فائن ٹیوننگ کا تفصیلی خاکہ ہیں: چینگ-ہان چیانگ، یونگ-سنگ چوانگ، ہنگ-ی لی، "AACL_2022_tutorial_PLMs،" 2022

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

دونوں طریقوں کو یکجا کر کے، ہم کم پیرامیٹرز کو ترتیب دیتے ہوئے ذاتی نوعیت کا ماڈل بنانے میں کامیاب ہو گئے۔ اس کے نتیجے میں تربیت کا وقت بہت تیز ہوا اور GPU کا استعمال کم ہوا۔ مزید برآں، اڈاپٹر کا وزن صرف 70 MB ہونے کے ساتھ اسٹوریج کو بہتر بنایا گیا، ایک مکمل اسٹیبل ڈفیوژن ماڈل کے لیے 6 GB کے مقابلے، جو کہ 99% سائز میں کمی کی نمائندگی کرتا ہے۔

نمونے کے نمونے تیار کریں۔

فائن ٹیوننگ مکمل ہونے کے بعد، پوسٹ پروسیسنگ مرحلہ LoRA کے وزن کو NVIDIA Triton کے لیے پیش کرنے والی باقی فائلوں کے ساتھ TAR کرے گا۔ ہم ایک Python بیک اینڈ استعمال کرتے ہیں، جس کا مطلب ہے کہ Triton config فائل اور Python اسکرپٹ کی ضرورت ہے جو اندازہ لگانے کے لیے استعمال کی جاتی ہے۔ نوٹ کریں کہ Python اسکرپٹ کا نام ہونا ضروری ہے۔ model.py. فائنل ماڈل TAR فائل میں درج ذیل فائل کا ڈھانچہ ہونا چاہئے:

|--sd_lora |--config.pbtxt |--1 |--model.py |--output #LoRA weights |--text_encoder |--unet |--train.sh

GPU کے ساتھ SageMaker MMEs کا استعمال کرتے ہوئے ٹھیک ٹیونڈ ماڈلز کی میزبانی کریں۔

ماڈلز کو ٹھیک کرنے کے بعد، ہم SageMaker MME کا استعمال کرتے ہوئے ذاتی نوعیت کے اسٹیبل ڈفیوژن ماڈلز کی میزبانی کرتے ہیں۔ A SageMaker MME ایک طاقتور تعیناتی خصوصیت ہے جو ایک کنٹینر میں ایک ہی اختتامی نقطہ کے پیچھے متعدد ماڈلز کی میزبانی کی اجازت دیتی ہے۔ یہ وسائل کے استعمال کو بہتر بنانے، اخراجات بچانے اور ہزاروں اختتامی پوائنٹس کے انتظام کے آپریشنل بوجھ کو کم کرنے کے لیے خود بخود ٹریفک اور آپ کے ماڈلز کی روٹنگ کا انتظام کرتا ہے۔ ہماری مثال میں، ہم GPU مثالوں پر چلتے ہیں، اور SageMaker MMEs Triton Server کا استعمال کرتے ہوئے GPU کو سپورٹ کرتے ہیں۔ یہ آپ کو ایک ہی GPU ڈیوائس پر متعدد ماڈل چلانے اور تیز رفتار کمپیوٹ کا فائدہ اٹھانے کی اجازت دیتا ہے۔ SageMaker MMEs پر Stable Diffusion کی میزبانی کرنے کے طریقے کے بارے میں مزید تفصیل کے لیے، ملاحظہ کریں۔ مستحکم ڈفیوژن ماڈلز کے ساتھ اعلیٰ معیار کی تصاویر بنائیں اور انہیں Amazon SageMaker کے ساتھ لاگت کے ساتھ تعینات کریں۔.

ہماری مثال کے طور پر، ہم نے ٹھنڈے آغاز کے حالات کے دوران فائن ٹیونڈ ماڈلز کو تیزی سے لوڈ کرنے کے لیے اضافی اصلاح کی۔ یہ LoRA کے اڈاپٹر ڈیزائن کی وجہ سے ممکن ہے۔ چونکہ بیس ماڈل وزن اور کونڈا ماحول تمام عمدہ ماڈلز کے لیے یکساں ہیں، اس لیے ہم ان مشترکہ وسائل کو ہوسٹنگ کنٹینر پر پہلے سے لوڈ کر کے شیئر کر سکتے ہیں۔ اس سے صرف ٹرائٹن کنفگ فائل رہ جاتی ہے، ازگر پسدید (model.py)، اور LoRA اڈاپٹر وزن پہلی درخواست کے بعد Amazon S3 سے متحرک طور پر لوڈ کیے جائیں گے۔ درج ذیل خاکہ ایک ساتھ بہ پہلو موازنہ فراہم کرتا ہے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

یہ ماڈل TAR فائل کو تقریباً 6 GB سے 70 MB تک کم کر دیتا ہے، اور اس وجہ سے لوڈ اور پیک کھولنا بہت تیز ہے۔ ہماری مثال میں پری لوڈنگ کرنے کے لیے، ہم نے ایک یوٹیلیٹی Python بیک اینڈ ماڈل بنایا ہے۔ models/model_setup. اسکرپٹ میں ایمیزون S3 سے بیس اسٹیبل ڈفیوژن ماڈل اور کونڈا ماحول کو ایک مشترکہ جگہ پر نقل کیا گیا ہے تاکہ تمام عمدہ ماڈلز میں اشتراک کیا جا سکے۔ مندرجہ ذیل کوڈ کا ٹکڑا ہے جو کام انجام دیتا ہے:

def initialize(self, args): #conda env setup self.conda_pack_path = Path(args['model_repository']) / "sd_env.tar.gz" self.conda_target_path = Path("/tmp/conda") self.conda_env_path = self.conda_target_path / "sd_env.tar.gz" if not self.conda_env_path.exists(): self.conda_env_path.parent.mkdir(parents=True, exist_ok=True) shutil.copy(self.conda_pack_path, self.conda_env_path) #base diffusion model setup self.base_model_path = Path(args['model_repository']) / "stable_diff.tar.gz" try: with tarfile.open(self.base_model_path) as tar: tar.extractall('/tmp') self.response_message = "Model env setup successful." except Exception as e: # print the exception message print(f"Caught an exception: {e}") self.response_message = f"Caught an exception: {e}"

پھر ہر عمدہ ماڈل کنٹینر پر مشترکہ مقام کی طرف اشارہ کرے گا۔ کونڈا ماحول کا حوالہ دیا گیا ہے۔ config.pbtxt.

name: "pipeline_0"
backend: "python"
max_batch_size: 1 ... parameters: { key: "EXECUTION_ENV_PATH", value: {string_value: "/tmp/conda/sd_env.tar.gz"}
}

اسٹیبل ڈفیوژن بیس ماڈل سے بھری ہوئی ہے۔ initialize() ہر ایک کی تقریب model.py فائل اس کے بعد ہم ذاتی نوعیت کے LoRA وزن کو unet اور پر لاگو کرتے ہیں۔ text_encoder ہر عمدہ ماڈل کو دوبارہ پیش کرنے کے لیے ماڈل:

... class TritonPythonModel: def initialize(self, args): self.output_dtype = pb_utils.triton_string_to_numpy( pb_utils.get_output_config_by_name(json.loads(args["model_config"]), "generated_image")["data_type"]) self.model_dir = args['model_repository'] device='cuda' self.pipe = StableDiffusionPipeline.from_pretrained('/tmp/stable_diff', torch_dtype=torch.float16, revision="fp16").to(device) # Load the LoRA weights self.pipe.unet = PeftModel.from_pretrained(self.pipe.unet, unet_sub_dir) if os.path.exists(text_encoder_sub_dir): self.pipe.text_encoder = PeftModel.from_pretrained(self.pipe.text_encoder, text_encoder_sub_dir)

اندازہ لگانے کے لیے ٹھیک ٹیونڈ ماڈل کا استعمال کریں۔

اب ہم ایم ایم ای اینڈ پوائنٹ کو استعمال کر کے اپنے عمدہ ماڈل کو آزما سکتے ہیں۔ ہم نے اپنی مثال میں جن ان پٹ پیرامیٹرز کو ظاہر کیا ہے ان میں شامل ہیں۔ prompt, negative_prompt، اور gen_argsجیسا کہ درج ذیل کوڈ کے ٹکڑوں میں دکھایا گیا ہے۔ ہم ڈکشنری میں ہر ان پٹ آئٹم کی ڈیٹا کی قسم اور شکل سیٹ کرتے ہیں اور انہیں JSON سٹرنگ میں تبدیل کرتے ہیں۔ آخر میں، سٹرنگ پے لوڈ اور TargetModel آپ کے اوتار کی تصویر بنانے کی درخواست میں بھیجے جاتے ہیں۔

import random prompt = """<<TOK>> epic portrait, zoomed out, blurred background cityscape, bokeh, perfect symmetry, by artgem, artstation ,concept art,cinematic lighting, highly detailed, octane, concept art, sharp focus, rockstar games, post processing, picture of the day, ambient lighting, epic composition""" negative_prompt = """
beard, goatee, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, blurry, bad anatomy, blurred, watermark, grainy, signature, cut off, draft, amateur, multiple, gross, weird, uneven, furnishing, decorating, decoration, furniture, text, poor, low, basic, worst, juvenile, unprofessional, failure, crayon, oil, label, thousand hands """ seed = random.randint(1, 1000000000) gen_args = json.dumps(dict(num_inference_steps=50, guidance_scale=7, seed=seed)) inputs = dict(prompt = prompt, negative_prompt = negative_prompt, gen_args = gen_args) payload = { "inputs": [{"name": name, "shape": [1,1], "datatype": "BYTES", "data": [data]} for name, data in inputs.items()]
} response = sm_runtime.invoke_endpoint( EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload), TargetModel="sd_lora.tar.gz",
)
output = json.loads(response["Body"].read().decode("utf8"))["outputs"]
original_image = decode_image(output[0]["data"][0])
original_image

صاف کرو

غیر ضروری چارجز سے بچنے کے لیے اس پوسٹ کے حصے کے طور پر فراہم کردہ وسائل کو حذف کرنے کے لیے نوٹ بک کے کلین اپ سیکشن میں دی گئی ہدایات پر عمل کریں۔ کا حوالہ دیتے ہیں ایمیزون سیج میکر قیمتوں کا تعین قیاس کی مثالوں کی لاگت سے متعلق تفصیلات کے لیے۔

نتیجہ

اس پوسٹ میں، ہم نے دکھایا کہ سیج میکر پر اسٹیبل ڈفیوژن کا استعمال کرتے ہوئے ذاتی نوعیت کا اوتار حل کیسے بنایا جائے۔ صرف چند تصاویر کے ساتھ پہلے سے تربیت یافتہ ماڈل کو ٹھیک کرنے سے، ہم ایسے اوتار بنا سکتے ہیں جو ہر صارف کی انفرادیت اور شخصیت کی عکاسی کرتے ہیں۔ یہ بہت سی مثالوں میں سے ایک ہے کہ ہم کس طرح صارفین کے لیے اپنی مرضی کے مطابق اور منفرد تجربات تخلیق کرنے کے لیے جنریٹو AI کا استعمال کر سکتے ہیں۔ امکانات لامتناہی ہیں، اور ہم آپ کو اس ٹیکنالوجی کے ساتھ تجربہ کرنے اور تخلیقی عمل کو بڑھانے کے لیے اس کی صلاحیت کو دریافت کرنے کی ترغیب دیتے ہیں۔ ہمیں امید ہے کہ یہ پوسٹ معلوماتی اور متاثر کن رہی ہے۔ ہم آپ کی حوصلہ افزائی کرتے ہیں کہ مثال کو آزمائیں اور سوشل پلیٹ فارمز پر #sagemaker #mme #genai ہیش ٹیگز کا استعمال کرتے ہوئے اپنی تخلیقات ہمارے ساتھ شیئر کریں۔ ہم یہ دیکھنا پسند کریں گے کہ آپ کیا بناتے ہیں۔

Stable Diffusion کے علاوہ، بہت سے دوسرے جنریٹو AI ماڈلز پر دستیاب ہیں۔ ایمیزون سیج میکر جمپ اسٹارٹ. کا حوالہ دیتے ہیں ایمیزون سیج میکر جمپ اسٹارٹ کے ساتھ شروع کرنا ان کی صلاحیتوں کو دریافت کرنے کے لیے۔


مصنفین کے بارے میں

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیجیمز وو AWS میں ایک سینئر AI/ML ماہر حل آرکیٹیکٹ ہے۔ AI/ML سلوشنز کو ڈیزائن اور بنانے میں صارفین کی مدد کرنا۔ جیمز کا کام ایم ایل کے استعمال کے کیسز کی ایک وسیع رینج پر محیط ہے، جس میں کمپیوٹر ویژن، گہری سیکھنے، اور پورے انٹرپرائز میں ایم ایل کی پیمائش میں بنیادی دلچسپی ہے۔ AWS میں شامل ہونے سے پہلے، جیمز 10 سال سے زائد عرصے تک ایک معمار، ڈویلپر، اور ٹیکنالوجی لیڈر تھے، جس میں 6 سال انجینئرنگ اور 4 سال مارکیٹنگ اور اشتہاری صنعتوں میں شامل تھے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیسائمن زمرین ایک AI/ML سلوشنز آرکیٹیکٹ ہے جس کی بنیادی توجہ صارفین کو ان کے ڈیٹا اثاثوں سے قیمت نکالنے میں مدد کرنا ہے۔ اپنے فارغ وقت میں، سائمن کو فیملی کے ساتھ وقت گزارنے، سائنس فائی پڑھنے، اور مختلف DIY ہاؤس پروجیکٹس پر کام کرنا پسند ہے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیوکرم ایلنگو ورجینیا USA میں مقیم Amazon Web Services میں AI/ML ماہر حل آرکیٹیکٹ ہے۔ وکرم مالیاتی اور انشورنس انڈسٹری کے صارفین کو ڈیزائن، سوچی سمجھی قیادت کے ساتھ مشین لرننگ ایپلی کیشنز کو بڑے پیمانے پر بنانے اور تعینات کرنے میں مدد کرتا ہے۔ وہ فی الحال پورے انٹرپرائز میں قدرتی لینگویج پروسیسنگ، ذمہ دار AI، انفرنس آپٹیمائزیشن اور اسکیلنگ ایم ایل پر مرکوز ہے۔ اپنے فارغ وقت میں، وہ اپنے خاندان کے ساتھ سفر، پیدل سفر، کھانا پکانے اور کیمپنگ سے لطف اندوز ہوتا ہے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیلانا ژانگ AWS WWSO AI سروسز ٹیم میں ایک سینئر سولیوشن آرکیٹیکٹ ہے، جو مواد کی اعتدال، کمپیوٹر ویژن، اور قدرتی زبان کی پروسیسنگ کے لیے AI اور ML میں مہارت رکھتا ہے۔ اپنی مہارت کے ساتھ، وہ AWS AI/ML سلوشنز کو فروغ دینے اور سوشل میڈیا، گیمنگ، ای کامرس، اور ایڈورٹائزنگ اور مارکیٹنگ سمیت متنوع صنعتوں میں اپنے کاروباری حل کو تبدیل کرنے میں صارفین کی مدد کرنے کے لیے وقف ہے۔

Amazon SageMaker کا استعمال کرتے ہوئے جنریٹیو AI کے ساتھ ذاتی نوعیت کا اوتار بنائیں | ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیسوربھ تریکنڈے Amazon SageMaker Inference کے لیے ایک سینئر پروڈکٹ مینیجر ہے۔ وہ صارفین کے ساتھ کام کرنے کا شوق رکھتا ہے اور مشین لرننگ کو جمہوری بنانے کے مقصد سے حوصلہ افزائی کرتا ہے۔ وہ پیچیدہ ایم ایل ایپلی کیشنز، ملٹی ٹیننٹ ایم ایل ماڈلز، لاگت کی اصلاح، اور ڈیپ لرننگ ماڈلز کی تعیناتی کو مزید قابل رسائی بنانے سے متعلق بنیادی چیلنجوں پر توجہ مرکوز کرتا ہے۔ اپنے فارغ وقت میں، سوربھ کو پیدل سفر کرنا، اختراعی ٹیکنالوجیز کے بارے میں سیکھنا، TechCrunch کی پیروی کرنا اور اپنے خاندان کے ساتھ وقت گزارنا پسند ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ