I-Generative Data Intelligence

Hambisa imodeli yesipikha ye-Hugging Face (PyAnnote) ku-Amazon SageMaker njengesiphetho esingavumelanisi | Izinsizakalo Zewebhu ze-Amazon

Usuku:

Ukudayela kwesipikha, inqubo ebalulekile ekuhlaziyweni komsindo, kuhlukanisa ifayela lomsindo ngokusekelwe kubunikazi besipika. Lokhu okuthunyelwe kudingida ekuhlanganiseni i-Hugging Face's PyAnnote yokudayela isipikha nge I-Amazon SageMaker amaphoyinti wokugcina asynchronous.

Sinikeza umhlahlandlela ophelele wokuthi ungasifaka kanjani izigaba zesipikha nezixazululo zokuhlanganisa kusetshenziswa i-SageMaker ku-AWS Cloud. Ungasebenzisa lesi sixazululo ezinhlelweni ezibhekene nezipikha eziningi (ezingaphezu kwe-100) ezirekhodiwe zomsindo.

Ukubukwa kwesisombululo

I-Amazon Transcribe iyisevisi yokuya kuyo yokudayela kwesipika ku-AWS. Kodwa-ke, ezilimini ezingasekelwe, ungasebenzisa amanye amamodeli (kithi, i-PyAnnote) azosetshenziswa ku-SageMaker ukuze aqondiswe. Ngamafayela alalelwayo amafushane lapho isiphetho sithatha amasekhondi angama-60, ungasebenzisa real-time inference. Imizuzwana engaphezu kuka-60, njenge-asynchronous kufanele kusetshenziswe isiphetho. Inzuzo eyengeziwe ye-asynchronous inference ukonga izindleko ngokukala ngokuzenzakalelayo inani lesibonelo liye kuqanda lapho zingekho izicelo zokucutshungulwa.

Ubuso Obumbambayo iyihabhu yomthombo ovulekile edumile yamamodeli wokufunda komshini (ML). I-AWS kanye nobuso obungangana bane-a Ukubambisana evumela ukuhlanganiswa okungenamthungo nge-SageMaker enesethi yama-AWS Deep Learning Containers (DLCs) ukuze kuqeqeshwe futhi kuqondiswe ku-PyTorch noma i-TensorFlow, kanye nezilinganiso zobuso beHugging kanye nezibikezelo ze-SageMaker Python SDK. Izici namakhono e-SageMaker kusiza onjiniyela nososayensi bedatha ukuthi baqale ngokucubungula ulimi lwemvelo (NLP) ku-AWS kalula.

Ukuhlanganiswa kwalesi sixazululo kuhilela ukusebenzisa imodeli ye-Hugging Face yesipika esiqeqeshwe kusengaphambili usebenzisa i- Umtapo wezincwadi we-PyAnnote. I-PyAnnote iyikhithi yamathuluzi yomthombo ovulekile ebhalwe nge-Python yokudayela isipikha. Le modeli, eqeqeshwe kudathasethi yomsindo eyisampula, inika amandla ukwahlukanisa kwesipikha okusebenzayo kumafayela omsindo. Imodeli isetshenziswa ku-SageMaker njengendlela yokusetha yokugcina engavumelanisi, ehlinzeka ngokucutshungulwa okusebenzayo nokunokwehla kwemisebenzi yokudayela.

Umdwebo olandelayo ubonisa isakhiwo sesixazululo.Isixazululo sezakhiwo

Kulokhu okuthunyelwe, sisebenzisa ifayela lomsindo elilandelayo.

Amafayela omsindo e-stereo noma aneziteshi eziningi axutshwa ngokuzenzakalelayo abe yi-mono ngokulinganisa amashaneli. Amafayela omsindo athathwe ngenani elihlukile aphinde asampuliwe abe ngu-16kHz ngokuzenzakalelayo lapho elayishwa.

Okudingekayo

Gcwalisa izimfuneko ezilandelayo:

  1. Dala isizinda seSageMaker.
  2. Qinisekisa kwakho Ubunikazi be-AWS Nokuphathwa Kokufinyelela (IAM) umsebenzisi unezimvume zokufinyelela ezidingekayo zokudala i- Indima ye-SageMaker.
  3. Qiniseka ukuthi i-akhawunti ye-AWS inesabelo sesevisi sokusingatha indawo yokugcina ye-SageMaker yesibonelo se-ml.g5.2xlarge.

Dala umsebenzi wemodeli wokufinyelela ukudayela kwesipikha se-PyAnnote kusuka ku-Hugging Face

Ungasebenzisa i-Hugging Face Hub ukuze ufinyelele okufiswayo okuqeqeshwe ngaphambilini Imodeli yokudayela yesipikha ye-PyAnnote. Usebenzisa iskripthi esifanayo ukulanda ifayela eliyimodeli lapho udala indawo yokugcina ye-SageMaker.

Ubuso obugonayo

Bona ikhodi elandelayo:

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

Phakisha ikhodi yemodeli

Lungiselela amafayela abalulekile njenge-inference.py, equkethe ikhodi ye-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
    }

Lungiselela i- requirements.txt ifayela, eliqukethe imitapo yolwazi edingekayo yePython edingekayo ukuze kuqhutshekwe nencazelo:

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")

Ekugcineni, cindezela inkinobho inference.py kanye namafayela e-squid.txt bese uwagcina njenge model.tar.gz:

!tar zcvf model.tar.gz *

Lungiselela imodeli ye-SageMaker

Chaza insiza yemodeli ye-SageMaker ngokucacisa i-URI yesithombe, indawo yedatha yemodeli Isevisi ye-Amazon Simple Storage (S3), kanye nendima ye-SageMaker:

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}")

Layisha imodeli ku-Amazon S3

Layisha ifayela lemodeli ye-PyAnnote Hugging Face efakwe uziphu ebhakedeni le-S3:

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

Dala i-SageMaker endpoint asynchronous

Lungiselela isiphetho esingavumelaniyo sokusebenzisa imodeli ku-SageMaker usebenzisa ukulungiselelwa okuqondisiwe okungavumelanisiyo:

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,
)

Hlola iphoyinti lokugcina

Hlola ukusebenza kwephoyinti lokugcina ngokuthumela ifayela lomsindo ukuze lidayelwe futhi ubuyisele okukhiphayo kwe-JSON okugcinwe endleleni eshiwo yokukhiphayo ye-S3:

# 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

Ukuze sisebenzise lesi sixazululo esikalini, siphakamisa ukuthi sisebenzise I-AWS Lambda, Isevisi Yezaziso Ezilula ze-Amazon (I-Amazon SNS), noma Isevisi ye-Amazon Simple Queue (I-Amazon SQS). Lawa masevisi aklanyelwe ukulinganisa, izakhiwo eziqhutshwa umcimbi, kanye nokusetshenziswa kwezinsiza ngendlela efanele. Bangasiza ekuhlukaniseni inqubo ye-asynchronous inference kusuka ekucutshungulweni komphumela, okukuvumela ukuthi ukale ingxenye ngayinye ngokuzimela futhi uphathe ukuqhuma kwezicelo zemibono ngempumelelo kakhulu.

Imiphumela

Okukhiphayo kwemodeli kugcinwa kokuthi s3://sagemaker-xxxx /async_inference/output/. Okukhiphayo kubonisa ukuthi ukurekhodwa komsindo kuhlukaniswe ngamakholomu amathathu:

  • Qala (isikhathi sokuqala ngamasekhondi)
  • Qeda (isikhathi sokuphela ngemizuzwana)
  • Isipikha (ilebula yesipikha)

Ikhodi elandelayo ibonisa isibonelo semiphumela yethu:

[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"]

Hlanza

Ungasetha inqubomgomo yokukala ibe ziro ngokumisa i-MinCapacity ibe ngu-0; i-asynchronous inference ikuvumela ukuthi ukale ngokuzenzakalelayo uye kuqanda ngaphandle kwezicelo. Awudingi ukususa iphoyinti lokugcina, yona isikali kusuka kuziro uma kudingeka futhi, ukunciphisa izindleko uma ingasetshenziswa. Bona ikhodi elandelayo:

# 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
)

Uma ufuna ukususa iphoyinti lokugcina, sebenzisa ikhodi elandelayo:

async_predictor.delete_endpoint(async_endpoint_name)

Izinzuzo zokuthunyelwa kwephoyinti lokugcina elingavumelanisiwe

Lesi sixazululo sinikeza izinzuzo ezilandelayo:

  • Isixazululo singaphatha kahle amafayela omsindo amaningi noma amakhulu.
  • Lesi sibonelo sisebenzisa isibonelo esisodwa ukuze sibonise. Uma ufuna ukusebenzisa lesi sixazululo kumakhulu noma izinkulungwane zamavidiyo futhi usebenzise isiphetho esingavumelaniyo ukucubungula ezimweni eziningi, ungasebenzisa inqubomgomo yokukala ngokuzenzakalelayo, eyenzelwe inani elikhulu lamadokhumenti omthombo. Ukukala okuzenzakalelayo kulungisa inani lezimo ezilungiselelwe imodeli ukuphendula izinguquko emthwalweni wakho wokusebenza.
  • Isixazululo sithuthukisa izinsiza futhi sinciphise umthwalo wesistimu ngokuhlukanisa imisebenzi ehlala isikhathi eside kusukela ekuqondeni kwesikhathi sangempela.

Isiphetho

Kulokhu okuthunyelwe, sinikeze indlela eqondile yokusebenzisa imodeli yesipikha se-Hugging Face ku-SageMaker sisebenzisa imibhalo yePython. Ukusebenzisa i-asynchronous endpoint kunikeza izindlela ezisebenza kahle nezilinganisekayo zokuletha izibikezelo zokudayela njengesevisi, ezivumela izicelo ezihambisanayo ngaphandle komthungo.

Qalisa namuhla ngokudayela kwe-asynchronous speaker kumaphrojekthi akho omsindo. Finyelela kumazwana uma unemibuzo mayelana nokuthola eyakho i-asynchronous diarization endpoint esebenzayo.


Mayelana Ababhali

Sanjay Tiwary i-Specialist Solutions Architect i-AI/ML echitha isikhathi sayo esebenza namakhasimende anamasu ukuze ichaze izidingo zebhizinisi, inikeze amaseshini e-L300 mayelana nezimo ezithile zokusetshenziswa, futhi iklame izinhlelo zokusebenza ze-AI/ML nezinsizakalo ezingaka, ezinokwethenjelwa, nezisebenzayo. Usize ukwethula nokukala insiza ye-Amazon SageMaker enikwe amandla yi-AI/ML futhi usebenzise ubufakazi obuningi bomqondo esebenzisa izinsiza ze-Amazon AI. Uphinde wasungula inkundla yezibalo ezithuthukisiwe njengengxenye yohambo loguquko lwedijithali.

Kiran Challapalli ungunjiniyela webhizinisi ojulile onomkhakha womphakathi we-AWS. Uneminyaka engaphezu kwengu-8 yesipiliyoni ku-AI/ML kanye neminyaka engu-23 yokuthuthukiswa kwesofthiwe iyonke kanye nesipiliyoni sokuthengisa. I-Kiran isiza amabhizinisi omkhakha womphakathi kulo lonke elase-India ukuthi ahlole futhi adale ngokuhlanganyela izixazululo ezisekelwe emafini ezisebenzisa i-AI, ML, ne-AI ekhiqizayoโ€”okuhlanganisa namamodeli ezilimi amakhuluโ€”ubuchwepheshe.

indawo_img

Latest Intelligence

indawo_img

Xoxa nathi

Sawubona lapho! Ngingakusiza kanjani?