Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazoni veebiteenused

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazoni veebiteenused

Eelmisel nädalal Tehnoloogiainnovatsiooni instituut (TII) käivitatud TII Falcon LLM, avatud lähtekoodiga põhikeele mudel (LLM). Treenitud 1 triljoni žetooniga Amazon SageMaker, Falconil on tipptasemel jõudlus (nr 1 Kallistava näo edetabel kirjutamise ajal), olles samas suhteliselt kerge ja odavam hostida kui teised LLM-id, nagu lama-65B. Selles postituses näitame, kuidas juurutada Falconit selliste rakenduste jaoks nagu keele mõistmine ja automatiseeritud kirjutamisabi, kasutades SageMakeris suuri mudelijäreldamise sügavaid õppekonteinereid.

Falcon on maandunud SageMakerile

TII on Abu Dhabi rakendusuuringute organisatsioon Kõrgtehnoloogia teadusnõukogu; selle teadlastest, teadlastest ja inseneridest koosnev meeskond on pühendunud transformatiivsete tehnoloogiate avastamisele ja teaduslike läbimurrete väljatöötamisele, mis tagavad meie ühiskonna tulevikukindluse. Selle aasta alguses asus TII koolitama tipptasemel avatud lähtekoodiga LLM-i ning kasutas selle töö tegemiseks SageMakeri infrastruktuuri, tööriistu ja teadmisi (et saada lisateavet selle mudeli SageMakeris väljaõppe kohta , viitama Tehnoloogiainnovatsiooni instituut koolitab Amazon SageMakeril tipptasemel Falcon LLM 40B vundamendimudelit). Selle pingutuse tulemus on TII Falcon LLM.

1 triljonil žetoonil treenitud Falconil on selle vastu tipptasemel jõudlus Eleutheri AI keelemudeli hindamise rakmed ja on praegu lehel 1 Kallistava näo edetabel täpsuse huvides. Mudel on saadaval kahes erinevas suuruses – Falcon-40B ja Falcon-7B – ning seda saab kasutada tipptasemel jõudluse tagamiseks sellistes rakendustes nagu keele mõistmine, vestluskogemused ja automaatne kirjutamisabi. See postitus aitab teil alustada Falconi juurutamist SageMakeris, et seda tüüpi domeenides teha täpseid järeldusi.

SageMakeri suurte mudelite järelduste DLC-d lihtsustavad LLM-i hostimist

LLM-ide, nagu Falcon-40B ja Falcon-7B, hostimine võib olla keeruline. Suuremad mudelid on sageli täpsemad, kuna need sisaldavad miljardeid parameetreid, kuid nende suurus võib põhjustada ka aeglasema järelduste latentsuse või halvema läbilaskevõime. LLM-i hostimine võib vastuvõetava jõudluse saavutamiseks vajada rohkem GPU-mälu ja optimeeritud tuumasid. Asja veelgi keerulisemaks muutmiseks mahuvad väiksemad mudelid nagu Falcon-7B üldiselt ühele GPU-le, näiteks NVIDIA A10G eksemplarile, mis toidab AWS G5 eksemplaritüüpe, kuid suuremad mudelid, nagu Falcon-40B, ei saa seda teha. Kui see juhtub, tuleb suurema mudeli mitmeks osaks killustamiseks ja mitme GPU mälu ärakasutamiseks kasutada selliseid strateegiaid nagu tensori paralleelsus. Väiksemate mudelite jaoks kasutatavad pärandhostimislahendused seda tüüpi funktsioone tavaliselt ei paku, mis suurendab raskusi.

Abiks võivad olla SageMakeri suurte mudelijärelduste (LMI) süvaõppekonteinerid (DLC). LMI DLC-d on täielik täielik lahendus LLM-ide, nagu Falcon-40B, hostimiseks. Esiotsa sisaldavad need suure jõudlusega mudeliserverit (DJL Serving), mis on loodud suurte mudelite järelduste tegemiseks koos selliste funktsioonidega nagu loa voogesitus ja automaatne mudeli replikatsioon eksemplaris, et suurendada läbilaskevõimet. Taustasüsteemis sisaldavad LMI DLC-d ka mitmeid suure jõudlusega paralleelseid mootoreid, nagu DeepSpeed ​​ja FasterTransformer, mis suudavad killustada ja hallata mudeli parameetreid mitmes GPU-s. Need mootorid sisaldavad ka populaarsete trafomudelite jaoks optimeeritud tuumasid, mis võivad kiirendada järelduste tegemist kuni kolm korda kiiremini. LMI DLC-de puhul peate lihtsalt looma konfiguratsioonifaili, et alustada LLM-i hostimist SageMakeris. SageMaker LMI DLC-de kohta lisateabe saamiseks vaadake Mudeli paralleelsus ja suure mudeli järeldus ja meie saadaolevate piltide loend. Võite vaadata ka meie eelmist postitust hostimise kohta Bloom-175B SageMakeris kasutades LMI DLC-sid.

Lahenduse ülevaade

See postitus juhendab teid, kuidas hostida Falcon-40B, kasutades SageMakeris DeepSpeedit, kasutades LMI DLC-sid. Falcon-40B nõuab, et kasutaksime mitut A10 GPU-d, samas kui Falcon-7B nõuab ainult ühte GPU-d. Oleme koostanud ka näiteid, mida saate viidata Falcon-40B ja Falcon-7B hostidele, kasutades nii DeepSpeedi kui ka Accelerate'i. Meie koodinäited leiate aadressilt GitHub.

Seda näidet saab käivitada SageMakeri märkmiku eksemplarides või Amazon SageMaker Studio märkmikud. Falcon-40B majutamiseks LMI ja DeepSpeediga peame kasutama eksemplari ml.g5.24xlarge. Need eksemplarid pakuvad 4x NVIDIA A10G GPU-d, millest igaüks toetab 96 GiB GPU mälu. Lisaks pakub host 96 vCPU-d ja 384 GiB hostimälu. LMI-konteiner aitab lahendada suure osa LLM-ide hostimisega seotud eristamata rasketest probleemidest, sealhulgas mudeli allalaadimisest ja mudeli artefakti partitsioonidest, nii et selle parameetreid saab levitada mitme GPU vahel.

SageMakeri masinõppe (ML) eksemplaride kvoodid võivad kontode lõikes erineda. Kui saate selle postituse jälgimise ajal veateate, mis näitab, et olete ületanud oma g5.24xlarge eksemplaride kvoodi, saate limiiti suurendada Teenuskvootide konsool.

Märkmiku tutvustus

Alustuseks installime ja impordime meie näite jaoks vajalikud sõltuvused. Kasutame nii Boto3 SDK-d kui ka SageMakeri SDK-d. Pange tähele, et me kasutame Amazoni lihtne salvestusteenus (Amazon S3), et salvestada mudeliartefakte, mida SageMaker ja LMI kasutada vajavad, seega seadistasime vastavalt S3 prefiksi muutuja. Vaadake järgmist koodi:

import sagemaker
import jinja2
from sagemaker import image_uris
import boto3
import os
import time
import json
from pathlib import Path
from sagemaker.utils import name_from_base role = sagemaker.get_execution_role() # execution role for the endpoint
sess = sagemaker.session.Session() # sagemaker session for interacting with different AWS APIs
bucket = sess.default_bucket() # bucket to house artifacts
model_bucket = sess.default_bucket() # bucket to house artifacts
s3_code_prefix_deepspeed = "hf-large-model-djl-/code_falcon40b/deepspeed" # folder within bucket where code artifact will go
region = sess._region_name
account_id = sess.account_id()
s3_client = boto3.client("s3")
sm_client = boto3.client("sagemaker")
smr_client = boto3.client("sagemaker-runtime")
jinja_env = jinja2.Environment()

Seejärel loome oma tööruumi jaoks kohaliku kausta, et salvestada meie mudeliartefakte:

!mkdir -p code_falcon40b_deepspeed

Esmalt loome a serving.properties konfiguratsioonifail meie loodud kohalikus kataloogis. See serving.properties fail näitab LMI konteinerile ja esiotsa DJL teenindusteegile, millist mudeli paralleelsus- ja järelduste optimeerimise mootorit me kasutada tahame. Leiate nii DeepSpeedi kui ka Hugging Face Accelerate'i konfiguratsioonivalikud Konfiguratsioonid ja seaded. Siin pange tähele, et seadsime option.model_id parameeter, et määrata, millisest Kallistava näo mudelist tõmmata. SageMaker muudab Hugging Face mudelitega töötamise lihtsaks ja see üks rida on kõik, mida vajate. Lisaks seadsime option.tensor_parallel_degree väärtusele 4, sest meie ml.g5.24xsuurel eksemplaril on neli GPU-d. See parameeter määrab, mitu partitsiooni mudelist luua ja levitada. Pange tähele, et kui oleksime kasutanud kaheksa graafikaprotsessoriga suuremat eksemplari (nt ml.g5.48xlarge) ja määranud ikkagi väärtuseks 4, siis LMI loob mudelist automaatselt kaks koopiat (kaks koopiat, mis on jagatud nelja GPU vahel). Vaadake järgmist koodi:

%%writefile ./code_falcon40b_deepspeed/serving.properties
engine=Python
#to deploy falcon-40b-instruct set the model_id value to 'tiiuae/falcon-40b-instruct'
option.model_id=tiiuae/falcon-40b
option.tensor_parallel_degree=4
#option.s3url = {{s3url}}

Võib ka välja vahetada tiiuae/falcon-40b koos tiiuae/falcon-40b-instruct kui see vastab teie vajadustele paremini.

Lisame ka a requirements.txt fail, mille saate määrata vajalike pakettide installimiseks:

%%writefile ./code_falcon40b_deepspeed/requirements.txt
einops
torch==2.0.1

Viimane asi, mida vajame, on model.py fail, mida teie mudeliga kasutatakse:

%%writefile ./code_falcon40b_deepspeed/model.py
from djl_python import Input, Output
import os
import torch
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
from typing import Any, Dict, Tuple
import warnings predictor = None def get_model(properties): model_name = properties["model_id"] local_rank = int(os.getenv("LOCAL_RANK", "0")) model = AutoModelForCausalLM.from_pretrained( model_name, low_cpu_mem_usage=True, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained(model_name) generator = pipeline( task="text-generation", model=model, tokenizer=tokenizer, device_map="auto" ) return generator def handle(inputs: Input) -> None: global predictor if not predictor: predictor = get_model(inputs.get_properties()) if inputs.is_empty(): # Model server makes an empty call to warmup the model on startup return None data = inputs.get_as_json() text = data["text"] text_length = data["text_length"] outputs = predictor(text, do_sample=True, min_length=text_length, max_length=text_length) result = {"outputs": outputs} return Output().add_as_json(result)

See on kõik! Praeguseks oleme loonud kõik artefaktid, mida Falcon-40B DeepSpeediga juurutamiseks vajate! Pakime kataloogi *.tar.gz faili ja laadime selle Amazon S3 üles. Pange tähele, et tegelikku mudelit pole sellesse faili alla laaditud ega pakitud. LMI konteiner laadib mudeli alla otse Hugging Face'ist. Teil on ka võimalus sihtida S3 ämbrit, kui soovite oma mudeli koopiat asukohta, mille allalaadimine on tõhusam. LMI sisaldab ka optimeerimist suure jõudlusega Amazon S3-st allalaadimiseks. Vaadake järgmist koodi:

s3_code_artifact_deepspeed= sess.upload_data("model.tar.gz", bucket, s3_code_prefix_deepspeed)
print(f"S3 Code or Model tar for deepspeed uploaded to --- > {s3_code_artifact_deepspeed}")

Siinkohal jääb üle vaid määratleda konteiner, mida soovime kasutada, ja luua mudelobjekt:

inference_image_uri = ( f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0.22.1-deepspeed0.8.3-cu118"
)
model_name_acc = name_from_base(f"falcon40b-model-ds")
create_model_response = sm_client.create_model( ModelName=model_name_acc, ExecutionRoleArn=role, PrimaryContainer={"Image": inference_image_uri, "ModelDataUrl": s3_code_artifact_deepspeed},
)
model_arn = create_model_response["ModelArn"]

Seejärel loome lõpp-punkti konfiguratsiooni ja loome lõpp-punkti:


endpoint_config_name = f"{model_name}-config"
endpoint_name = f"{model_name}-endpoint"
endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", "ModelName": model_name, "InstanceType": "ml.g5.24xlarge", "InitialInstanceCount": 1, "ModelDataDownloadTimeoutInSeconds": 3600, "ContainerStartupHealthCheckTimeoutInSeconds": 3600, # "VolumeSizeInGB": 512 }, ],
)
endpoint_config_response create_endpoint_response = sm_client.create_endpoint( EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)
print(f"Created Endpoint: {create_endpoint_response['EndpointArn']}")

Konfiguratsioonielemendid, mida edukaks hostimiseks meeles pidada

Suure mudeli hostimise puhul on oluline tagada, et Hugging Face'i mudeli allalaadimiseks jääks piisavalt aega. Meie testides kulus Falcon-40B eksemplari allalaadimiseks umbes 90 minutit. Peamised konfiguratsioonikomplektid, mis seda võimaldavad, on ContainerStartupHealthCheckTimeoutInSeconds ja ModelDataDownloadTimeoutInSeconds. Veenduge, et SageMakeri lõpp-punkti konfiguratsiooni väärtus oleks kõigi nende jaoks 3600. Lisaks on palju lihtsam alla laadida Amazon S3-st, mitte algse mudeli loomaaiast, kasutades LMI-konteinereid, mis on spetsiaalselt loodud LLMS-i jaoks ja kasutavad utiliiti S5cmd, mis lühendab mudeli allalaadimisaega umbes 10 minutini.

Lõpp-punkti olekut saate jälgida helistades DescribeEndpoint, mis annab teile teada, kui kõik on valmis. Teie lõpp-punkt on nüüd valmis järeldustaotlustele vastama! Kuna LMI tegeleb mudeli jaotamise ja orkestreerimisega teie eest, töödeldakse iga taotlust kõigi nelja graafikaprotsessoriga, mis on saadaval meie ml.g4xlarge eksemplaris. See võimaldab meil majutada LLM-e ja suurendada jõudlust, kui skaleerite GPU-kiirendeid horisontaalselt. Vaadake järgmist koodi:

response_model = smr_client.invoke_endpoint( EndpointName=endpoint_name, Body=json.dumps({"text": "What is the purpose of life?", "text_length": 150}), ContentType="application/json",
) response_model["Body"].read().decode("utf8")

Kui olete lõpetanud ja soovite lõpp-punkti konfiguratsiooni, lõpp-punkti ja mudeliobjekti kustutada, saate käivitada järgmised käsud.

sm_client.delete_endpoint(EndpointName=endpoint_name)
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
sm_client.delete_model(ModelName=model_name)

Selle koodi, millele selles postituses viitasime, leiate täielikust osast märkmik GitHubis.

Järeldus

SageMakeri hostimine ja LMI DLC muudavad LLM-ide, nagu Falcon-40B, hostimise lihtsaks. See võtab diferentseerimata raskuste tõstmise, korraldades seda, mida on vaja mudelite hostimiseks mitmes GPU-s, ja pakub teie vajadustele vastavaid konfigureeritavaid valikuid. Lisaks muutub Hugging Face mudelite kasutamine väga lihtsaks, kuna nendele mudelitele on sisseehitatud tugi.

Selles postituses näitasime, kuidas saate kasutada SageMakerit Falcon-40B mudeli hostimiseks, kasutades DeepSpeedit. Lisaks esitasime näiteid GitHub et majutada Falcon-40B, kasutades Accelerate, ja väiksemaid Falcon-7B mudeleid. Soovitame teil seda proovida LMI-ga SageMakeriga ja tutvuda seni kõige paremini toimiva avalikult saadaoleva LLM-iga!


Autoritest

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Jamesi park on Amazon Web Servicesi lahenduste arhitekt. Ta teeb koostööd Amazon.com-iga, et kavandada, ehitada ja juurutada AWS-is tehnoloogilised lahendused ning ta on eriti huvitatud AI-st ja masinõppest. Vabal ajal meeldib talle otsida uusi kultuure, uusi kogemusi ja olla kursis uusimate tehnoloogiatrendidega. Leiate ta aadressilt LinkedIn.

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Abhi Shivaditya on AWS-i lahenduste vanemarhitekt, kes teeb koostööd strateegiliste ülemaailmsete ettevõtete organisatsioonidega, et hõlbustada AWS-i teenuste kasutuselevõttu sellistes valdkondades nagu tehisintellekt, hajutatud andmetöötlus, võrgundus ja salvestusruum. Tema teadmised seisnevad süvaõppes loomuliku keele töötlemise (NLP) ja arvutinägemise valdkondades. Abhi abistab kliente suure jõudlusega masinõppemudelite tõhusal juurutamisel AWS-i ökosüsteemis.

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Robert Van Dusen on Amazon SageMakeri vanem tootejuht. Ta juhib süvaõppe mudelite optimeerimist selliste rakenduste jaoks nagu suurte mudelite järeldus.

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Evandro Franco on AI/ML spetsialistilahenduste arhitekt, kes töötab Amazon Web Servicesis. Ta aitab AWS-i klientidel lisaks AWS-ile ületada AI/ML-iga seotud äriprobleeme. Ta on rohkem kui 15 aastat töötanud tehnoloogiaga alates tarkvaraarendusest, infrastruktuurist, serverita ja masinõppeni.

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Qing Lan on AWS-i tarkvaraarenduse insener. Ta on Amazonis töötanud mitmete väljakutset pakkuvate toodetega, sealhulgas suure jõudlusega ML järelduslahenduste ja suure jõudlusega logimissüsteemiga. Qingi meeskond käivitas Amazon Advertisingis edukalt esimese miljardi parameetriga mudeli, mille latentsusaeg on väga väike. Qingil on põhjalikud teadmised infrastruktuuri optimeerimise ja süvaõppe kiirendamise kohta.

Rakendage rakenduses Amazon SageMaker | Falcon-40B suurte mudelijäreldavate DLC-dega Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Frank Liu on AWS-i süvaõppe tarkvarainsener. Ta keskendub uuenduslike süvaõppe tööriistade loomisele tarkvarainseneridele ja teadlastele. Vabal ajal meeldib talle sõprade ja perega matkata.

Ajatempel:

Veel alates AWS-i masinõpe