هوش داده افلاطون
جستجوی عمودی و هوش مصنوعی

ساخت یک باطن جمع بندی جلسات بدون سرور با مدل های زبان بزرگ در Amazon SageMaker JumpStart | خدمات وب آمازون

تاریخ:

AWS خدماتی را ارائه می دهد که نیازهای هوش مصنوعی (AI) و یادگیری ماشینی (ML) مشتریان را با خدماتی از سخت افزار سفارشی مانند AWS Trainium و استنتاج AWS به مدل های پایه هوش مصنوعی (FMs) در بستر آمازون. در فوریه 2022، AWS و Hugging Face همکاری خود را برای سهولت دسترسی بیشتر و مقرون به صرفه تر کردن هوش مصنوعی مولد اعلام کردند..

هوش مصنوعی مولد از بزرگترین مدل از پیش آموزش دیده در سال 2019 با 330 میلیون پارامتر به بیش از 500 میلیارد پارامتر امروز رشد کرده است. عملکرد و کیفیت مدل ها نیز با تعداد پارامترها به شدت بهبود یافت. این مدل ها وظایفی مانند تبدیل متن به متن، متن به تصویر، جاسازی متن به متن و موارد دیگر را در بر می گیرند. می‌توانید از مدل‌های زبان بزرگ (LLM) به‌طور خاص برای کارهایی از جمله خلاصه‌سازی، استخراج ابرداده و پاسخ‌گویی به سؤال استفاده کنید.

Amazon SageMaker JumpStart یک مرکز ML است که می تواند به شما کمک کند سفر ML خود را تسریع کنید. با JumpStart، می توانید به مدل های از پیش آموزش دیده و مدل های پایه از Fondations Model Hub برای انجام کارهایی مانند خلاصه سازی مقاله و تولید تصویر دسترسی داشته باشید. مدل های از پیش آموزش دیده کاملاً برای موارد استفاده شما قابل تنظیم هستند و می توانند به راحتی با رابط کاربری یا SDK در تولید مستقر شوند. مهمتر از همه، هیچ یک از داده های شما برای آموزش مدل های اساسی استفاده نمی شود. از آنجایی که همه داده‌ها رمزگذاری شده‌اند و از ابر خصوصی مجازی (VPC) خارج نمی‌شوند، می‌توانید اعتماد کنید که داده‌های شما خصوصی و محرمانه باقی می‌مانند.

این پست بر روی ایجاد خلاصه‌سازی جلسات بدون سرور با استفاده از آن تمرکز دارد آمازون رونوشت برای رونویسی صوتی جلسه و Flan-T5-XL مدل از Hugging Face (موجود در JumpStart) برای خلاصه.

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

Meeting Notes Generator Solution با استفاده از خط لوله بدون سرور خودکار ایجاد می کند AWS لامبدا برای رونویسی و خلاصه کردن فایل های صوتی و تصویری جلسات. راه حل را می توان با سایر FM های موجود در JumpStart مستقر کرد.

راه حل شامل اجزای زیر است:

  • یک پوسته اسکریپت برای ایجاد یک لایه Lambda سفارشی
  • قابل تنظیم AWS CloudFormation قالب برای استقرار راه حل
  • کد تابع لامبدا برای شروع کارهای رونویسی آمازون رونویسی
  • کد تابع لامبدا برای فراخوانی a نقطه پایان بلادرنگ SageMaker میزبانی از مدل Flan T5 XL

نمودار زیر این معماری را نشان می دهد.

نمودار معماری

همانطور که در نمودار معماری نشان داده شده است، ضبط جلسات، رونوشت ها و یادداشت ها در موارد مربوطه ذخیره می شوند. سرویس ذخیره سازی ساده آمازون سطل (Amazon S3). راه حل یک رویکرد رویداد محور برای رونویسی و خلاصه کردن رویدادهای آپلود S3 دارد. رویدادها توابع Lambda را برای برقراری تماس‌های API با Amazon Transcript و فراخوانی نقطه پایانی بی‌درنگ میزبان مدل Flan T5 XL فعال می‌کنند.

الگوی CloudFormation و دستورالعمل‌های استقرار راه‌حل را می‌توانید در این قسمت پیدا کنید مخزن GitHub.

استنتاج بلادرنگ با SageMaker

استنتاج بلادرنگ در SageMaker برای بارهای کاری با نیازهای تاخیر کم طراحی شده است. نقاط پایانی SageMaker به طور کامل مدیریت می شوند و از چندین مورد پشتیبانی می کنند گزینه های میزبانی و مقیاس بندی خودکار. پس از ایجاد، نقطه پایانی را می توان با فراخوانی کرد InvokeEndpoint API. الگوی ارائه شده CloudFormation یک نقطه پایانی بلادرنگ با تعداد نمونه های پیش فرض 1 ایجاد می کند، اما می توان آن را بر اساس بار مورد انتظار در نقطه پایانی و همانطور که سهمیه سرویس برای نوع نمونه اجازه می دهد، تنظیم کرد. شما می توانید درخواست افزایش سهمیه خدمات در صفحه سهمیه خدمات از کنسول مدیریت AWS.

قطعه زیر از الگوی CloudFormation مدل SageMaker، پیکربندی نقطه پایانی و نقطه پایانی را با استفاده از ModelData و ImageURI Flan T5 XL از JumpStart. می توانید FM های بیشتری را در آن کاوش کنید شروع کار با Amazon SageMaker JumpStart. برای استقرار راه حل با یک مدل دیگر، آن را جایگزین کنید ModelData و ImageURI پارامترهای موجود در قالب CloudFormation به ترتیب با آرتیفکت مدل S3 و URI تصویر ظرف مورد نظر. بررسی کنید نمونه نوت بوک در GitHub برای کد نمونه در مورد نحوه بازیابی آخرین مصنوع مدل JumpStart در Amazon S3 و تصویر کانتینر عمومی مربوطه ارائه شده توسط SageMaker.

 # SageMaker Model SageMakerModel: Type: AWS::SageMaker::Model Properties: ModelName: !Sub ${AWS::StackName}-SageMakerModel Containers: - Image: !Ref ImageURI ModelDataUrl: !Ref ModelData Mode: SingleModel Environment: { "MODEL_CACHE_ROOT": "/opt/ml/model", "SAGEMAKER_ENV": "1", "SAGEMAKER_MODEL_SERVER_TIMEOUT": "3600", "SAGEMAKER_MODEL_SERVER_WORKERS": "1", "SAGEMAKER_PROGRAM": "inference.py", "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code/", "TS_DEFAULT_WORKERS_PER_MODEL": 1 } EnableNetworkIsolation: true ExecutionRoleArn: !GetAtt SageMakerExecutionRole.Arn # SageMaker Endpoint Config SageMakerEndpointConfig: Type: AWS::SageMaker::EndpointConfig Properties: EndpointConfigName: !Sub ${AWS::StackName}-SageMakerEndpointConfig ProductionVariants: - ModelName: !GetAtt SageMakerModel.ModelName VariantName: !Sub ${SageMakerModel.ModelName}-1 InitialInstanceCount: !Ref InstanceCount InstanceType: !Ref InstanceType InitialVariantWeight: 1.0 VolumeSizeInGB: 40 # SageMaker Endpoint SageMakerEndpoint: Type: AWS::SageMaker::Endpoint Properties: EndpointName: !Sub ${AWS::StackName}-SageMakerEndpoint EndpointConfigName: !GetAtt SageMakerEndpointConfig.EndpointConfigName

راه حل را مستقر کنید

برای مراحل دقیق در مورد استقرار راه حل، موارد زیر را دنبال کنید استقرار با CloudFormation بخش از مخزن GitHub.

اگر می‌خواهید از نوع نمونه متفاوت یا نمونه‌های بیشتری برای نقطه پایانی استفاده کنید، درخواست افزایش سهمیه برای نوع نمونه مورد نظر را در داشبورد سهمیه خدمات AWS.

برای استفاده از یک FM متفاوت برای نقطه پایانی، آن را جایگزین کنید ImageURI و ModelData پارامترها در قالب CloudFormation برای FM مربوطه.

محلول را تست کنید

پس از استقرار راه حل با استفاده از اسکریپت ایجاد لایه Lambda و الگوی CloudFormation، می توانید معماری را با آپلود یک جلسه صوتی یا تصویری ضبط شده در هر یک از موارد آزمایش کنید. فرمت های رسانه ای که توسط آمازون رونویسی پشتیبانی می شوند. مراحل زیر را کامل کنید:

  1. در کنسول آمازون S3، را انتخاب کنید سطل در صفحه ناوبری
  2. از لیست سطل های S3، سطل S3 ایجاد شده توسط الگوی CloudFormation با نام را انتخاب کنید. meeting-note-generator-demo-bucket-<aws-account-id>.
  3. را انتخاب کنید ایجاد پوشه.
  4. برای نام پوشه، پیشوند S3 مشخص شده در را وارد کنید S3RecordingsPrefix پارامتر الگوی CloudFormation (recordings به صورت پیش فرض).
  5. را انتخاب کنید ایجاد پوشه.
  6. در پوشه تازه ایجاد شده، را انتخاب کنید بارگذاری.
  7. را انتخاب کنید اضافه کردن فایل و فایل ضبط جلسه را برای آپلود انتخاب کنید.
  8. را انتخاب کنید بارگذاری.

اکنون می توانیم رونویسی موفق را بررسی کنیم.

  1. در کنسول آمازون رونویسی، انتخاب کنید مشاغل رونویسی در صفحه ناوبری
  2. بررسی کنید که یک کار رونویسی با نام متناظر با جلسه ضبط شده آپلود شده دارای وضعیت باشد در حال پیشرفت or تکمیل.
  3. وقتی وضعیت است تکمیل، به کنسول آمازون S3 برگردید و سطل دمو را باز کنید.
  4. در سطل S3، آن را باز کنید transcripts/ پوشه.
  5. برای مشاهده رونویسی فایل متنی تولید شده را دانلود کنید.

همچنین می توانیم خلاصه تولید شده را بررسی کنیم.

  1. در سطل S3، آن را باز کنید notes/ پوشه.
  2. برای مشاهده خلاصه تولید شده فایل متنی تولید شده را دانلود کنید.

مهندسی سریع

اگرچه LLM ها در چند سال گذشته بهبود یافته اند، مدل ها فقط می توانند ورودی های محدودی دریافت کنند. بنابراین، درج یک متن کامل از یک جلسه ممکن است از حد مدل فراتر رود و باعث ایجاد خطا در فراخوانی شود. برای طراحی پیرامون این چالش، می‌توانیم با محدود کردن تعداد نشانه‌ها در هر زمینه فراخوانی، زمینه را به بخش‌های قابل مدیریت تقسیم کنیم. در این راه حل نمونه، رونوشت به تکه های کوچکتر با حداکثر محدودیت در تعداد توکن ها در هر تکه شکسته می شود. سپس هر تکه رونوشت با استفاده از مدل Flan T5 XL خلاصه می شود. در نهایت، خلاصه‌های تکه‌ای با هم ترکیب می‌شوند تا زمینه را برای خلاصه ترکیبی نهایی تشکیل دهند، همانطور که در نمودار زیر نشان داده شده است.

کد زیر از GenerateMeetingNotes تابع لامبدا از جعبه ابزار زبان طبیعی (NLTK) کتابخانه ای برای توکن کردن رونوشت، سپس رونوشت را به بخش هایی تقسیم می کند که هر کدام شامل تعداد معینی نشانه است:

# Chunk transcript into chunks
transcript = contents['results']['transcripts'][0]['transcript']
transcript_tokens = word_tokenize(transcript) num_chunks = int(math.ceil(len(transcript_tokens) / CHUNK_LENGTH))
transcript_chunks = []
for i in range(num_chunks): if i == num_chunks - 1: chunk = TreebankWordDetokenizer().detokenize(transcript_tokens[CHUNK_LENGTH * i:]) else: chunk = TreebankWordDetokenizer().detokenize(transcript_tokens[CHUNK_LENGTH * i:CHUNK_LENGTH * (i + 1)]) transcript_chunks.append(chunk)

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

# Summarize each chunk
chunk_summaries = []
for i in range(len(transcript_chunks)): text_input = '{}n{}'.format(transcript_chunks[i], instruction) payload = { "text_inputs": text_input, "max_length": 100, "num_return_sequences": 1, "top_k": 50, "top_p": 0.95, "do_sample": True } query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8')) generated_texts = parse_response_multiple_texts(query_response) chunk_summaries.append(generated_texts[0]) print(generated_texts[0])

در نهایت، قطعه کد زیر خلاصه‌های تکه‌ای را به عنوان زمینه برای ایجاد یک خلاصه نهایی ترکیب می‌کند:

# Create a combined summary
text_input = '{}n{}'.format(' '.join(chunk_summaries), instruction)
payload = { "text_inputs": text_input, "max_length": 100, "num_return_sequences": 1, "top_k": 50, "top_p": 0.95, "do_sample": True
}
query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))
generated_texts = parse_response_multiple_texts(query_response) results = { "summary": generated_texts, "chunk_summaries": chunk_summaries
}

کامل GenerateMeetingNotes تابع لامبدا را می توان در مخزن GitHub.

پاک کردن

برای تمیز کردن محلول، مراحل زیر را انجام دهید:

  1. تمام اشیاء موجود در سطل دمو S3 و سطل لاگ S3 را حذف کنید.
  2. پشته CloudFormation را حذف کنید.
  3. لایه Lambda را حذف کنید.

نتیجه

این پست نحوه استفاده از FMها در JumpStart را برای ساخت سریع معماری مولد یادداشت‌های جلسه بدون سرور با AWS CloudFormation نشان می‌دهد. همراه با سرویس‌های هوش مصنوعی AWS مانند Amazon Transcript و فناوری‌های بدون سرور مانند Lambda، می‌توانید از FM در JumpStart و Amazon Bedrock برای ساخت برنامه‌های کاربردی برای موارد مختلف استفاده از هوش مصنوعی استفاده کنید.

برای پست‌های بیشتر در مورد ML در AWS، به آدرس زیر مراجعه کنید وبلاگ AWS ML.


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

اریک کیم یک معمار راه حل (SA) در خدمات وب آمازون است. او با توسعه دهندگان و ناشران بازی برای ساخت بازی های مقیاس پذیر و خدمات پشتیبانی در AWS کار می کند. او در درجه اول بر کاربردهای هوش مصنوعی و یادگیری ماشین تمرکز دارد.

نقطه_img

جدیدترین اطلاعات

نقطه_img

چت با ما

سلام! چگونه می توانم به شما کمک کنم؟