جنریٹیو ڈیٹا انٹیلی جنس

Amazon SageMaker پر ایک غیر مطابقت پذیر اختتامی نقطہ کے طور پر ایک گلے لگانے والا چہرہ (PyAnnote) اسپیکر ڈائرائزیشن ماڈل تعینات کریں۔ ایمیزون ویب سروسز

تاریخ:

اسپیکر ڈائرائزیشن، آڈیو تجزیہ میں ایک ضروری عمل، اسپیکر کی شناخت کی بنیاد پر ایک آڈیو فائل کو الگ کرتا ہے۔ یہ پوسٹ سپیکر کی ڈائرائزیشن کے لیے Hugging Face's PyAnote کو مربوط کرنے پر غور کرتی ہے۔ ایمیزون سیج میکر متضاد اختتامی پوائنٹس

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

حل جائزہ

ایمیزون نقل AWS میں اسپیکر ڈائرائزیشن کے لیے جانے والی سروس ہے۔ تاہم، غیر تعاون یافتہ زبانوں کے لیے، آپ دوسرے ماڈلز (ہمارے معاملے میں، PyAnnote) استعمال کر سکتے ہیں جو کہ تخمینہ کے لیے SageMaker میں تعینات کیے جائیں گے۔ مختصر آڈیو فائلوں کے لیے جہاں اندازہ لگانے میں 60 سیکنڈ لگتے ہیں، آپ استعمال کر سکتے ہیں۔ حقیقی وقت کا اندازہ. 60 سیکنڈ سے زیادہ کے لیے، الیکشنروس اندازہ استعمال کیا جانا چاہئے. غیر مطابقت پذیر تخمینہ کا اضافی فائدہ یہ ہے کہ جب کارروائی کی کوئی درخواست نہ ہو تو مثال کی گنتی کو خود بخود اسکیل کرکے لاگت کی بچت ہوتی ہے۔

گلے لگانے والا چہرہ مشین لرننگ (ML) ماڈلز کے لیے ایک مقبول اوپن سورس ہب ہے۔ AWS اور Hugging Face ہے a شراکت داری جو PyTorch یا TensorFlow میں تربیت اور تخمینہ لگانے کے لیے AWS ڈیپ لرننگ کنٹینرز (DLCs) کے سیٹ کے ساتھ SageMaker کے ذریعے بغیر کسی رکاوٹ کے انضمام کی اجازت دیتا ہے، اور SageMaker Python SDK کے لیے چہرے کے تخمینے اور پیشن گوئی کرنے والوں کو گلے لگاتا ہے۔ SageMaker کی خصوصیات اور صلاحیتیں ڈیولپرز اور ڈیٹا سائنسدانوں کو آسانی کے ساتھ AWS پر قدرتی زبان کی پروسیسنگ (NLP) کے ساتھ شروع کرنے میں مدد کرتی ہیں۔

اس حل کے انضمام میں ہگنگ فیس کے پہلے سے تربیت یافتہ اسپیکر ڈائرائزیشن ماڈل کا استعمال شامل ہے۔ PyAnote لائبریری. PyAnnote ایک اوپن سورس ٹول کٹ ہے جو Python میں اسپیکر ڈائرائزیشن کے لیے لکھی گئی ہے۔ یہ ماڈل، نمونہ آڈیو ڈیٹاسیٹ پر تربیت یافتہ، آڈیو فائلوں میں موثر اسپیکر کی تقسیم کو قابل بناتا ہے۔ ماڈل کو SageMaker پر ایک غیر مطابقت پذیر اختتامی نقطہ سیٹ اپ کے طور پر تعینات کیا گیا ہے، جو ڈائرائزیشن کے کاموں کی موثر اور قابل توسیع پروسیسنگ فراہم کرتا ہے۔

مندرجہ ذیل خاکہ حل کے فن تعمیر کی وضاحت کرتا ہے۔حل فن تعمیر

اس پوسٹ کے لیے، ہم درج ذیل آڈیو فائل استعمال کرتے ہیں۔

سٹیریو یا ملٹی چینل آڈیو فائلیں خود بخود چینلز کی اوسط کے ذریعے مونو میں ڈاون مکس ہو جاتی ہیں۔ مختلف شرحوں پر نمونے کی گئی آڈیو فائلوں کو لوڈ ہونے پر خود بخود 16kHz پر دوبارہ نمونہ کیا جاتا ہے۔

شرائط

درج ذیل شرائط کو مکمل کریں:

  1. سیج میکر ڈومین بنائیں.
  2. یقینی بنائیں کہ آپ کے AWS شناخت اور رسائی کا انتظام (IAM) صارف کو ایک بنانے کے لیے ضروری رسائی کی اجازت ہے۔ سیج میکر کا کردار.
  3. یقینی بنائیں کہ AWS اکاؤنٹ میں ml.g5.2xlarge مثال کے لیے SageMaker اینڈ پوائنٹ کی میزبانی کے لیے سروس کوٹہ ہے۔

Hugging Face سے PyAnnote اسپیکر ڈائرائزیشن تک رسائی کے لیے ایک ماڈل فنکشن بنائیں

آپ پہلے سے تربیت یافتہ مطلوبہ تک رسائی کے لیے Hugging Face Hub استعمال کر سکتے ہیں۔ PyAnote اسپیکر ڈائرائزیشن ماڈل. SageMaker اینڈ پوائنٹ بناتے وقت آپ ماڈل فائل کو ڈاؤن لوڈ کرنے کے لیے وہی اسکرپٹ استعمال کرتے ہیں۔

گلے ملتے ہوئے چہرہ

درج ذیل کوڈ دیکھیں:

from PyAnnote.audio import Pipeline

def model_fn(model_dir):
# Load the model from the specified model directory
model = Pipeline.from_pretrained(
"PyAnnote/speaker-diarization-3.1",
use_auth_token="Replace-with-the-Hugging-face-auth-token")
return model

ماڈل کوڈ کو پیک کریں۔

inference.py جیسی ضروری فائلیں تیار کریں، جس میں inference کوڈ ہوتا ہے:

%%writefile model/code/inference.py
from PyAnnote.audio import Pipeline
import subprocess
import boto3
from urllib.parse import urlparse
import pandas as pd
from io import StringIO
import os
import torch

def model_fn(model_dir):
    # Load the model from the specified model directory
    model = Pipeline.from_pretrained(
        "PyAnnote/speaker-diarization-3.1",
        use_auth_token="hf_oBxxxxxxxxxxxx)
    return model 


def diarization_from_s3(model, s3_file, language=None):
    s3 = boto3.client("s3")
    o = urlparse(s3_file, allow_fragments=False)
    bucket = o.netloc
    key = o.path.lstrip("/")
    s3.download_file(bucket, key, "tmp.wav")
    result = model("tmp.wav")
    data = {} 
    for turn, _, speaker in result.itertracks(yield_label=True):
        data[turn] = (turn.start, turn.end, speaker)
    data_df = pd.DataFrame(data.values(), columns=["start", "end", "speaker"])
    print(data_df.shape)
    result = data_df.to_json(orient="split")
    return result


def predict_fn(data, model):
    s3_file = data.pop("s3_file")
    language = data.pop("language", None)
    result = diarization_from_s3(model, s3_file, language)
    return {
        "diarization_from_s3": result
    }

تیار کرنا a requirements.txt فائل، جس میں قیاس کو چلانے کے لیے ضروری ازگر لائبریریاں شامل ہیں:

with open("model/code/requirements.txt", "w") as f:
    f.write("transformers==4.25.1n")
    f.write("boto3n")
    f.write("PyAnnote.audion")
    f.write("soundfilen")
    f.write("librosan")
    f.write("onnxruntimen")
    f.write("wgetn")
    f.write("pandas")

آخر میں، سکیڑیں inference.py اور requirements.txt فائلیں اور اسے بطور محفوظ کریں۔ model.tar.gz:

!tar zcvf model.tar.gz *

سیج میکر ماڈل کو ترتیب دیں۔

تصویر URI، ماڈل ڈیٹا لوکیشن ان میں بتا کر SageMaker ماڈل ریسورس کی وضاحت کریں۔ ایمیزون سادہ اسٹوریج سروس (S3)، اور سیج میکر کا کردار:

import sagemaker
import boto3

sess = sagemaker.Session()

sagemaker_session_bucket = None
if sagemaker_session_bucket is None and sess is not None:
    sagemaker_session_bucket = sess.default_bucket()

try:
    role = sagemaker.get_execution_role()
except ValueError:
    iam = boto3.client("iam")
    role = iam.get_role(RoleName="sagemaker_execution_role")["Role"]["Arn"]

sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)

print(f"sagemaker role arn: {role}")
print(f"sagemaker bucket: {sess.default_bucket()}")
print(f"sagemaker session region: {sess.boto_region_name}")

ایمیزون S3 پر ماڈل اپ لوڈ کریں۔

زپ شدہ PyAnnote Hugging Face ماڈل فائل کو S3 بالٹی میں اپ لوڈ کریں:

s3_location = f"s3://{sagemaker_session_bucket}/whisper/model/model.tar.gz"
!aws s3 cp model.tar.gz $s3_location

سیج میکر غیر مطابقت پذیر اختتامی نقطہ بنائیں

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

from sagemaker.huggingface.model import HuggingFaceModel
from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig
from sagemaker.s3 import s3_path_join
from sagemaker.utils import name_from_base

async_endpoint_name = name_from_base("custom-asyc")

# create Hugging Face Model Class
huggingface_model = HuggingFaceModel(
    model_data=s3_location,  # path to your model and script
    role=role,  # iam role with permissions to create an Endpoint
    transformers_version="4.17",  # transformers version used
    pytorch_version="1.10",  # pytorch version used
    py_version="py38",  # python version used
)

# create async endpoint configuration
async_config = AsyncInferenceConfig(
    output_path=s3_path_join(
        "s3://", sagemaker_session_bucket, "async_inference/output"
    ),  # Where our results will be stored
    # Add nofitication SNS if needed
    notification_config={
        # "SuccessTopic": "PUT YOUR SUCCESS SNS TOPIC ARN",
        # "ErrorTopic": "PUT YOUR ERROR SNS TOPIC ARN",
    },  #  Notification configuration
)

env = {"MODEL_SERVER_WORKERS": "2"}

# deploy the endpoint endpoint
async_predictor = huggingface_model.deploy(
    initial_instance_count=1,
    instance_type="ml.xx",
    async_inference_config=async_config,
    endpoint_name=async_endpoint_name,
    env=env,
)

اختتامی نقطہ کی جانچ کریں۔

ڈائرائزیشن کے لیے ایک آڈیو فائل بھیج کر اور مخصوص S3 آؤٹ پٹ پاتھ میں ذخیرہ کردہ JSON آؤٹ پٹ کو بازیافت کرکے اینڈ پوائنٹ کی فعالیت کا اندازہ کریں:

# Replace with a path to audio object in S3
from sagemaker.async_inference import WaiterConfig
res = async_predictor.predict_async(data=data)
print(f"Response output path: {res.output_path}")
print("Start Polling to get response:")

config = WaiterConfig(
  max_attempts=10, #  number of attempts
  delay=10#  time in seconds to wait between attempts
  )
res.get_result(config)
#import waiterconfig

اس حل کو پیمانے پر تعینات کرنے کے لیے، ہم استعمال کرنے کا مشورہ دیتے ہیں۔ او ڈبلیو ایس لامبڈا۔, ایمیزون سادہ نوٹیفکیشن سروس (ایمیزون ایس این ایس)، یا ایمیزون سادہ قطار سروس (ایمیزون ایس کیو ایس)۔ یہ خدمات اسکیل ایبلٹی، ایونٹ سے چلنے والے فن تعمیر، اور وسائل کے موثر استعمال کے لیے ڈیزائن کی گئی ہیں۔ وہ نتیجہ کی پروسیسنگ سے غیر مطابقت پذیر تخمینہ کے عمل کو دوگنا کرنے میں مدد کر سکتے ہیں، جس سے آپ کو ہر ایک جزو کو آزادانہ طور پر پیمانہ کرنے اور تخمینہ کی درخواستوں کو زیادہ مؤثر طریقے سے سنبھالنے کی اجازت ملتی ہے۔

نتائج کی نمائش

ماڈل آؤٹ پٹ پر محفوظ ہے۔ s3://sagemaker-xxxx /async_inference/output/. آؤٹ پٹ سے پتہ چلتا ہے کہ آڈیو ریکارڈنگ کو تین کالموں میں تقسیم کیا گیا ہے۔

  • شروع کریں (شروع کا وقت سیکنڈ میں)
  • اختتام (سیکنڈ میں اختتامی وقت)
  • اسپیکر (اسپیکر لیبل)

درج ذیل کوڈ ہمارے نتائج کی ایک مثال دکھاتا ہے:

[0.9762308998, 8.9049235993, "SPEAKER_01"]

[9.533106961, 12.1646859083, "SPEAKER_01"]

[13.1324278438, 13.9303904924, "SPEAKER_00"]

[14.3548387097, 26.1884550085, "SPEAKER_00"]

[27.2410865874, 28.2258064516, "SPEAKER_01"]

[28.3446519525, 31.298811545, "SPEAKER_01"]

صاف کرو

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

# Common class representing application autoscaling for SageMaker 
client = boto3.client('application-autoscaling') 

# This is the format in which application autoscaling references the endpoint
resource_id='endpoint/' + <endpoint_name> + '/variant/' + <'variant1'> 

# Define and register your endpoint variant
response = client.register_scalable_target(
    ServiceNamespace='sagemaker', 
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', # The number of EC2 instances for your Amazon SageMaker model endpoint variant.
    MinCapacity=0,
    MaxCapacity=5
)

اگر آپ اختتامی نقطہ کو حذف کرنا چاہتے ہیں تو درج ذیل کوڈ کا استعمال کریں:

async_predictor.delete_endpoint(async_endpoint_name)

غیر مطابقت پذیر اختتامی نقطہ کی تعیناتی کے فوائد

یہ حل درج ذیل فوائد پیش کرتا ہے:

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

نتیجہ

اس پوسٹ میں، ہم نے Python اسکرپٹس کا استعمال کرتے ہوئے SageMaker پر Hugging Face کے اسپیکر ڈائرائزیشن ماڈل کو تعینات کرنے کے لیے ایک سیدھا سادہ طریقہ فراہم کیا ہے۔ ایک غیر مطابقت پذیر اختتامی نقطہ کا استعمال ایک سروس کے طور پر ڈائیرائزیشن کی پیشین گوئیاں فراہم کرنے کے لیے ایک موثر اور قابل توسیع ذریعہ فراہم کرتا ہے، بغیر کسی رکاوٹ کے ہم آہنگی کی درخواستوں کو ایڈجسٹ کرتا ہے۔

اپنے آڈیو پروجیکٹس کے لیے اسینکرونس اسپیکر ڈائرائزیشن کے ساتھ آج ہی شروع کریں۔ تبصرے میں پہنچیں اگر آپ کے اپنے غیر مطابقت پذیر ڈائیرائزیشن اینڈ پوائنٹ کو تیار کرنے اور چلانے کے بارے میں کوئی سوال ہے۔


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

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

کرن چلاپلی۔ AWS پبلک سیکٹر کے ساتھ ایک گہری ٹیک بزنس ڈویلپر ہے۔ اس کے پاس AI/ML میں 8 سال سے زیادہ کا تجربہ ہے اور مجموعی طور پر سافٹ ویئر ڈویلپمنٹ اور سیلز کا 23 سال کا تجربہ ہے۔ کرن پورے ہندوستان میں پبلک سیکٹر کے کاروباروں کو کلاؤڈ پر مبنی حل تلاش کرنے اور ان کے ساتھ تخلیق کرنے میں مدد کرتی ہے جو AI، ML، اور جنریٹیو AI کا استعمال کرتے ہیں—بشمول بڑے زبان کے ماڈل—ٹیکنالوجیز۔

اسپاٹ_مگ

تازہ ترین انٹیلی جنس

اسپاٹ_مگ

ہمارے ساتھ بات چیت

ہیلو وہاں! میں آپ کی کیسے مدد کر سکتا ہوں؟