Under de senaste åren har stora språkmodeller (LLM) blivit framträdande som enastående verktyg som kan förstå, generera och manipulera text med oöverträffad skicklighet. Deras potentiella applikationer sträcker sig från konversationsagenter till innehållsgenerering och informationshämtning, med löftet att revolutionera alla branscher. Men att utnyttja denna potential samtidigt som man säkerställer en ansvarsfull och effektiv användning av dessa modeller beror på den kritiska processen för utvärdering av LLM. En utvärdering är en uppgift som används för att mäta kvaliteten och ansvaret för produktionen av en LLM eller generativ AI-tjänst. Att utvärdera LLM:er motiveras inte bara av önskan att förstå en modellprestanda utan också av behovet av att implementera ansvarsfull AI och av behovet av att minska risken för att tillhandahålla desinformation eller partiskt innehåll och att minimera genereringen av skadliga, osäkra, skadliga och oetiska innehåll. Dessutom kan utvärdering av LLM också hjälpa till att minska säkerhetsrisker, särskilt i samband med snabb datamanipulation. För LLM-baserade applikationer är det avgörande att identifiera sårbarheter och implementera skyddsåtgärder som skyddar mot potentiella intrång och otillåten manipulation av data.
Genom att tillhandahålla viktiga verktyg för att utvärdera LLM:er med en enkel konfiguration och ett klick-tillvägagångssätt, Amazon SageMaker Clarify LLM-utvärderingsmöjligheter ger kunder tillgång till de flesta av de ovan nämnda fördelarna. Med dessa verktyg i hand är nästa utmaning att integrera LLM-utvärdering i Machine Learning and Operation (MLOps) livscykel för att uppnå automatisering och skalbarhet i processen. I det här inlägget visar vi dig hur du integrerar Amazon SageMaker Clarify LLM-utvärdering med Amazon SageMaker Pipelines för att möjliggöra LLM-utvärdering i stor skala. Dessutom tillhandahåller vi kodexempel i detta GitHub repository för att göra det möjligt för användarna att utföra parallell utvärdering av flera modeller i stor skala, med hjälp av exempel som Llama2-7b-f, Falcon-7b och finjusterade Llama2-7b-modeller.
Vem behöver utföra LLM-utvärdering?
Alla som tränar, finjusterar eller helt enkelt använder en förutbildad LLM måste noggrant utvärdera den för att bedöma beteendet hos applikationen som drivs av den LLM. Baserat på denna grundsats kan vi klassificera generativa AI-användare som behöver LLM-utvärderingskapacitet i tre grupper som visas i följande figur: modellleverantörer, finjusterare och konsumenter.
- Grundläggande modell (FM) leverantörer tågmodeller som är generella. Dessa modeller kan användas för många nedströmsuppgifter, till exempel extrahering av funktioner eller för att generera innehåll. Varje utbildad modell måste jämföras med många uppgifter, inte bara för att bedöma dess prestanda utan också för att jämföra den med andra befintliga modeller, för att identifiera områden som behöver förbättringar och slutligen för att hålla reda på framsteg inom området. Modellleverantörer måste också kontrollera förekomsten av eventuella fördomar för att säkerställa kvaliteten på startdatauppsättningen och deras modells korrekta beteende. Att samla in utvärderingsdata är avgörande för modellleverantörer. Dessutom måste dessa data och mätvärden samlas in för att följa kommande regelverk. ISO 42001 , den Biden Administration Executive Orderoch EU:s AI-lag utveckla standarder, verktyg och tester för att säkerställa att AI-system är säkra, säkra och pålitliga. Till exempel har EU AI Act i uppdrag att tillhandahålla information om vilka datamängder som används för utbildning, vilken beräkningskraft som krävs för att köra modellen, rapportera modellresultat mot offentliga/industristandardiserade riktmärken och dela resultat från interna och externa tester.
- Modell finjusterare vill lösa specifika uppgifter (t.ex. sentimentklassificering, sammanfattning, frågesvar) samt förutbildade modeller för att anta domänspecifika uppgifter. De behöver utvärderingsmått som genereras av modellleverantörer för att välja rätt förutbildad modell som utgångspunkt.
De måste utvärdera sina finjusterade modeller mot deras önskade användningsfall med uppgiftsspecifika eller domänspecifika datamängder. Ofta måste de kurera och skapa sina privata datauppsättningar eftersom offentligt tillgängliga datauppsättningar, även de som är designade för en specifik uppgift, kanske inte tillräckligt fångar nyanserna som krävs för deras specifika användningsfall.
Finjustering är snabbare och billigare än en fullständig utbildning och kräver snabbare operativ iteration för driftsättning och testning eftersom många kandidatmodeller vanligtvis genereras. Att utvärdera dessa modeller möjliggör kontinuerlig modellförbättring, kalibrering och felsökning. Observera att finjusterare kan bli konsumenter av sina egna modeller när de utvecklar verkliga applikationer. - Modell konsumenter eller modellutvecklare betjänar och övervakar generella eller finjusterade modeller i produktionen, i syfte att förbättra sina applikationer eller tjänster genom införandet av LLM. Den första utmaningen de har är att se till att den valda LLM överensstämmer med deras specifika behov, kostnader och prestandaförväntningar. Att tolka och förstå modellens resultat är ett ihållande problem, särskilt när integritet och datasäkerhet är inblandade (t.ex. för granskning av risker och efterlevnad i reglerade branscher, såsom finanssektorn). Kontinuerlig modellutvärdering är avgörande för att förhindra spridning av partiskhet eller skadligt innehåll. Genom att implementera ett robust ramverk för övervakning och utvärdering kan modellkonsumenter proaktivt identifiera och ta itu med regression i LLM, vilket säkerställer att dessa modeller bibehåller sin effektivitet och tillförlitlighet över tid.
Hur man utför LLM-utvärdering
Effektiv modellutvärdering involverar tre grundläggande komponenter: en eller flera FM:er eller finjusterade modeller för att utvärdera indatauppsättningarna (uppmaningar, konversationer eller vanliga indata) och utvärderingslogiken.
För att välja modeller för utvärdering måste olika faktorer beaktas, inklusive dataegenskaper, problemkomplexitet, tillgängliga beräkningsresurser och önskat resultat. Indatalageret tillhandahåller de data som behövs för träning, finjustering och testning av den valda modellen. Det är viktigt att denna databutik är välstrukturerad, representativ och av hög kvalitet, eftersom modellens prestanda till stor del beror på den data den lär sig av. Slutligen definierar utvärderingslogik de kriterier och mått som används för att bedöma modellens prestanda.
Tillsammans bildar dessa tre komponenter ett sammanhållet ramverk som säkerställer en rigorös och systematisk bedömning av maskininlärningsmodeller, vilket i slutändan leder till välgrundade beslut och förbättringar av modellens effektivitet.
Modellutvärderingstekniker är fortfarande ett aktivt forskningsfält. Många offentliga riktmärken och ramverk har skapats av forskargemenskapen under de senaste åren för att täcka ett brett spektrum av uppgifter och scenarier som t.ex. LIM, Superlim, RODER, MMLU och STOR-bänk. Dessa riktmärken har topplistor som kan användas för att jämföra och kontrastera utvärderade modeller. Benchmarks, som HELM, syftar också till att bedöma mätvärden utöver noggrannhetsmått, som precision eller F1-poäng. HELM-riktmärket inkluderar mätvärden för rättvisa, bias och toxicitet som har en lika stor betydelse för den övergripande modellutvärderingen.
Alla dessa riktmärken inkluderar en uppsättning mått som mäter hur modellen presterar på en viss uppgift. De mest kända och vanligaste mätvärdena är RÖD (Återkallelseorienterad understudy for Gisting Evaluation), BLÅ (BiLingual Evaluation Understudy), eller METEOR (Mätvärde för utvärdering av översättning med explicit ordning). Dessa mätvärden fungerar som ett användbart verktyg för automatiserad utvärdering och ger kvantitativa mått på lexikal likhet mellan genererad text och referenstext. De fångar dock inte hela bredden av mänskligt språkgenerering, som inkluderar semantisk förståelse, sammanhang eller stilistiska nyanser. Till exempel tillhandahåller HELM inte utvärderingsdetaljer som är relevanta för specifika användningsfall, lösningar för att testa anpassade uppmaningar och lätttolkade resultat som används av icke-experter, eftersom processen kan vara kostsam, inte lätt att skala och endast för specifika uppgifter.
Dessutom kräver att skapa mänskligt språkgenerering ofta inkorporering av människa-i-slingan för att få kvalitativa bedömningar och mänskligt omdöme för att komplettera de automatiserade noggrannhetsmåtten. Mänsklig utvärdering är en värdefull metod för att bedöma LLM-resultat, men den kan också vara subjektiv och benägen för partiskhet eftersom olika mänskliga utvärderare kan ha olika åsikter och tolkningar av textkvalitet. Vidare kan mänsklig utvärdering vara resurskrävande och kostsam och det kan kräva betydande tid och ansträngning.
Låt oss dyka djupt in i hur Amazon SageMaker Clarify sömlöst kopplar ihop punkterna och hjälper kunderna att genomföra en noggrann modellutvärdering och val.
LLM-utvärdering med Amazon SageMaker Clarify
Amazon SageMaker Clarify hjälper kunder att automatisera mätvärdena, inklusive men inte begränsat till noggrannhet, robusthet, toxicitet, stereotyper och faktakunskaper för automatiserad samt stil, koherens, relevans för mänskligt baserad utvärdering och utvärderingsmetoder genom att tillhandahålla ett ramverk för att utvärdera LLM:er och LLM-baserade tjänster som Amazon Bedrock. Som en fullt hanterad tjänst förenklar SageMaker Clarify användningen av utvärderingsramverk med öppen källkod inom Amazon SageMaker. Kunder kan välja relevanta utvärderingsdatauppsättningar och mätvärden för sina scenarier och utöka dem med sina egna snabbdatauppsättningar och utvärderingsalgoritmer. SageMaker Clarify levererar utvärderingsresultat i flera format för att stödja olika roller i LLM-arbetsflödet. Dataforskare kan analysera detaljerade resultat med SageMaker Clarify-visualiseringar i anteckningsböcker, SageMaker-modellkort och PDF-rapporter. Under tiden kan driftteam använda Amazon SageMaker GroundTruth för att granska och kommentera högriskobjekt som SageMaker Clarify identifierar. Till exempel genom stereotyper, toxicitet, undkom PII eller låg noggrannhet.
Anteckningar och förstärkningsinlärning används sedan för att minska potentiella risker. Människovänliga förklaringar av de identifierade riskerna påskyndar den manuella granskningen och minskar därmed kostnaderna. Sammanfattande rapporter erbjuder affärsintressenter jämförande riktmärken mellan olika modeller och versioner, vilket underlättar välgrundat beslutsfattande.
Följande figur visar ramverket för att utvärdera LLM:er och LLM-baserade tjänster:
Amazon SageMaker Clarify LLM-utvärdering är ett bibliotek med öppen källkod för Foundation Model Evaluation (FMEval) utvecklat av AWS för att hjälpa kunder att enkelt utvärdera LLM:er. Alla funktioner har också införlivats i Amazon SageMaker Studio för att möjliggöra LLM-utvärdering för sina användare. I följande avsnitt introducerar vi integrationen av Amazon SageMaker Clarify LLM-utvärderingsfunktioner med SageMaker Pipelines för att möjliggöra LLM-utvärdering i stor skala genom att använda MLOps-principer.
Amazon SageMaker MLOps livscykel
Som inlägget "MLOps grundplan för företag med Amazon SageMaker” beskriver, MLOps är kombinationen av processer, människor och teknik för att effektivt producera ML-användningsfall.
Följande figur visar MLOps-livscykeln från början till slut:
En typisk resa börjar med att en dataforskare skapar en proof-of-concept (PoC)-anteckningsbok för att bevisa att ML kan lösa ett affärsproblem. Under hela utvecklingen av Proof of Concept (PoC) faller det på datavetaren att omvandla Business Key Performance Indicators (KPI:er) till mätvärden för maskininlärningsmodeller, såsom precision eller falsk-positiv frekvens, och använda en begränsad testdatauppsättning för att utvärdera dessa metrik. Dataforskare samarbetar med ML-ingenjörer för att överföra kod från bärbara datorer till arkiv, skapa ML-pipelines med Amazon SageMaker Pipelines, som kopplar samman olika bearbetningssteg och uppgifter, inklusive förbearbetning, utbildning, utvärdering och efterbearbetning, samtidigt som de kontinuerligt införlivar ny produktion data. Distribution av Amazon SageMaker Pipelines är beroende av repository-interaktioner och CI/CD-pipelineaktivering. ML-pipelinen upprätthåller topppresterande modeller, containerbilder, utvärderingsresultat och statusinformation i ett modellregister, där modellintressenter bedömer prestanda och beslutar om progression till produktion baserat på prestandaresultat och benchmarks, följt av aktivering av en annan CI/CD-pipeline för iscensättning och produktionsinstallation. Väl i produktion använder ML-konsumenter modellen via applikationsutlöst slutledning genom direktanrop eller API-anrop, med återkopplingsslingor till modellägare för pågående prestandautvärdering.
Amazon SageMaker Clarify och MLOps-integration
Efter MLOps livscykel producerar finjusterande eller användare av modeller med öppen källkod finjusterade modeller eller FM med hjälp av Amazon SageMaker Jumpstart och MLOps-tjänster, som beskrivs i Implementering av MLOps-praxis med Amazon SageMaker JumpStart förtränade modeller. Detta ledde till en ny domän för grundmodelldrift (FMOps) och LLM Operations (LLMOps) FMOps/LLMOps: Operationalisera generativ AI och skillnader med MLOps.
Följande bild visar hela livscykeln för LLMOPS:
I LLMOps är de största skillnaderna jämfört med MLOps modellval och modellutvärdering som involverar olika processer och mätvärden. I den inledande experimentfasen väljer dataforskarna (eller finjusterarna) den FM som kommer att användas för ett specifikt användningsfall för Generativ AI.
Detta resulterar ofta i testning och finjustering av flera FM-apparater, av vilka några kan ge jämförbara resultat. Efter valet av modell/modeller är snabbingenjörer ansvariga för att förbereda nödvändiga indata och förväntade utdata för utvärdering (t.ex. indataprompter som omfattar indata och fråga) och definiera mätvärden som likhet och toxicitet. Utöver dessa mätvärden måste datavetare eller finjusterare validera resultaten och välja lämplig FM inte bara på precisionsmätningar, utan på andra funktioner som latens och kostnad. Sedan kan de distribuera en modell till en SageMaker-slutpunkt och testa dess prestanda i liten skala. Även om experimentfasen kan innebära en enkel process, kräver övergången till produktion att kunderna automatiserar processen och förbättrar lösningens robusthet. Därför måste vi göra en djupdykning i hur man automatiserar utvärdering, vilket gör det möjligt för testare att utföra effektiv utvärdering i stor skala och implementera realtidsövervakning av modellinmatning och -utgång.
Automatisera FM-utvärdering
Amazon SageMaker Pipelines automatiserar alla faser av förbearbetning, FM-finjustering (valfritt) och utvärdering i stor skala. Med tanke på de utvalda modellerna under experimentet måste snabbingenjörer täcka en större uppsättning av fall genom att förbereda många uppmaningar och lagra dem i ett avsett lagringsförråd som kallas promptkatalog. För mer information, se FMOps/LLMOps: Operationalisera generativ AI och skillnader med MLOps. Sedan kan Amazon SageMaker Pipelines struktureras enligt följande:
Scenario 1 – Utvärdera flera FM:er: I det här scenariot kan FM:erna täcka affärsanvändningsfallet utan finjustering. Amazon SageMaker Pipeline består av följande steg: förbearbetning av data, parallell utvärdering av flera FM:er, modelljämförelse och urval baserat på noggrannhet och andra egenskaper som kostnad eller latens, registrering av utvalda modellartefakter och metadata.
Följande diagram illustrerar denna arkitektur.
Scenario 2 – Finjustera och utvärdera flera FM: I det här scenariot är Amazon SageMaker Pipeline strukturerad ungefär som Scenario 1, men den körs parallellt med både finjusterings- och utvärderingssteg för varje FM. Den bäst finjusterade modellen kommer att registreras i modellregistret.
Följande diagram illustrerar denna arkitektur.
Scenario 3 – Utvärdera flera FMs och finjusterade FMs: Det här scenariot är en kombination av utvärdering av allmänna FM-apparater och finjusterade FM-apparater. I det här fallet vill kunderna kontrollera om en finjusterad modell kan prestera bättre än en allmän FM.
Följande figur visar de resulterande SageMaker Pipeline-stegen.
Observera att modellregistrering följer två mönster: (a) lagra en modell med öppen källkod och artefakter eller (b) lagra en referens till en proprietär FM. För mer information, se FMOps/LLMOps: Operationalisera generativ AI och skillnader med MLOps.
Lösningsöversikt
För att påskynda din resa till LLM-utvärdering i stor skala skapade vi en lösning som implementerar scenarierna med både Amazon SageMaker Clarify och den nya Amazon SageMaker Pipelines SDK. Kodexemplet, inklusive datauppsättningar, källanteckningsböcker och SageMaker Pipelines (steg och ML pipeline), finns på GitHub. För att utveckla denna exempellösning har vi använt två FM:er: Llama2 och Falcon-7B. I det här inlägget är vårt primära fokus på nyckelelementen i SageMaker Pipeline-lösningen som hänför sig till utvärderingsprocessen.
Utvärderingskonfiguration: I syfte att standardisera utvärderingsproceduren har vi skapat en YAML-konfigurationsfil, (evaluation_config.yaml), som innehåller nödvändiga detaljer för utvärderingsprocessen inklusive datamängden, modellen/modellerna och algoritmerna som ska köras under utvärderingssteg av SageMaker Pipeline. Följande exempel illustrerar konfigurationsfilen:
pipeline: name: "llm-evaluation-multi-models-hybrid" dataset: dataset_name: "trivia_qa_sampled" input_data_location: "evaluation_dataset_trivia.jsonl" dataset_mime_type: "jsonlines" model_input_key: "question" target_output_key: "answer" models: - name: "llama2-7b-f" model_id: "meta-textgeneration-llama-2-7b-f" model_version: "*" endpoint_name: "llm-eval-meta-textgeneration-llama-2-7b-f" deployment_config: instance_type: "ml.g5.2xlarge" num_instances: 1 evaluation_config: output: '[0].generation.content' content_template: [[{"role":"user", "content": "PROMPT_PLACEHOLDER"}]] inference_parameters: max_new_tokens: 100 top_p: 0.9 temperature: 0.6 custom_attributes: accept_eula: True prompt_template: "$feature" cleanup_endpoint: True - name: "falcon-7b" ... - name: "llama2-7b-finetuned" ... finetuning: train_data_path: "train_dataset" validation_data_path: "val_dataset" parameters: instance_type: "ml.g5.12xlarge" num_instances: 1 epoch: 1 max_input_length: 100 instruction_tuned: True chat_dataset: False ... algorithms: - algorithm: "FactualKnowledge" module: "fmeval.eval_algorithms.factual_knowledge" config: "FactualKnowledgeConfig" target_output_delimiter: "<OR>"
Utvärderingssteg: Den nya SageMaker Pipeline SDK ger användarna flexibiliteten att definiera anpassade steg i ML-arbetsflödet med hjälp av '@step' Python-dekoratorn. Därför måste användarna skapa ett grundläggande Python-skript som utför utvärderingen, enligt följande:
def evaluation(data_s3_path, endpoint_name, data_config, model_config, algorithm_config, output_data_path,): from fmeval.data_loaders.data_config import DataConfig from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner from fmeval.reporting.eval_output_cells import EvalOutputCell from fmeval.constants import MIME_TYPE_JSONLINES s3 = boto3.client("s3") bucket, object_key = parse_s3_url(data_s3_path) s3.download_file(bucket, object_key, "dataset.jsonl") config = DataConfig( dataset_name=data_config["dataset_name"], dataset_uri="dataset.jsonl", dataset_mime_type=MIME_TYPE_JSONLINES, model_input_location=data_config["model_input_key"], target_output_location=data_config["target_output_key"], ) evaluation_config = model_config["evaluation_config"] content_dict = { "inputs": evaluation_config["content_template"], "parameters": evaluation_config["inference_parameters"], } serializer = JSONSerializer() serialized_data = serializer.serialize(content_dict) content_template = serialized_data.replace('"PROMPT_PLACEHOLDER"', "$prompt") print(content_template) js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_config["model_id"], model_version=model_config["model_version"], output=evaluation_config["output"], content_template=content_template, custom_attributes="accept_eula=true", ) eval_output_all = [] s3 = boto3.resource("s3") output_bucket, output_index = parse_s3_url(output_data_path) for algorithm in algorithm_config: algorithm_name = algorithm["algorithm"] module = importlib.import_module(algorithm["module"]) algorithm_class = getattr(module, algorithm_name) algorithm_config_class = getattr(module, algorithm["config"]) eval_algo = algorithm_class(algorithm_config_class(target_output_delimiter=algorithm["target_output_delimiter"])) eval_output = eval_algo.evaluate(model=js_model_runner, dataset_config=config, prompt_template=evaluation_config["prompt_template"], save=True,) print(f"eval_output: {eval_output}") eval_output_all.append(eval_output) html = markdown.markdown(str(EvalOutputCell(eval_output[0]))) file_index = (output_index + "/" + model_config["name"] + "_" + eval_algo.eval_name + ".html") s3_object = s3.Object(bucket_name=output_bucket, key=file_index) s3_object.put(Body=html) eval_result = {"model_config": model_config, "eval_output": eval_output_all} print(f"eval_result: {eval_result}") return eval_result
SageMaker Pipeline: Efter att ha skapat de nödvändiga stegen, såsom förbearbetning av data, modelldistribution och modellutvärdering, måste användaren länka samman stegen genom att använda SageMaker Pipeline SDK. Den nya SDK:n genererar automatiskt arbetsflödet genom att tolka beroenden mellan olika steg när ett SageMaker Pipeline-skapande API anropas som visas i följande exempel:
import os
import argparse
from datetime import datetime import sagemaker
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.function_step import step
from sagemaker.workflow.step_outputs import get_step # Import the necessary steps
from steps.preprocess import preprocess
from steps.evaluation import evaluation
from steps.cleanup import cleanup
from steps.deploy import deploy from lib.utils import ConfigParser
from lib.utils import find_model_by_name if __name__ == "__main__": os.environ["SAGEMAKER_USER_CONFIG_OVERRIDE"] = os.getcwd() sagemaker_session = sagemaker.session.Session() # Define data location either by providing it as an argument or by using the default bucket default_bucket = sagemaker.Session().default_bucket() parser = argparse.ArgumentParser() parser.add_argument("-input-data-path", "--input-data-path", dest="input_data_path", default=f"s3://{default_bucket}/llm-evaluation-at-scale-example", help="The S3 path of the input data",) parser.add_argument("-config", "--config", dest="config", default="", help="The path to .yaml config file",) args = parser.parse_args() # Initialize configuration for data, model, and algorithm if args.config: config = ConfigParser(args.config).get_config() else: config = ConfigParser("pipeline_config.yaml").get_config() evalaution_exec_id = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") pipeline_name = config["pipeline"]["name"] dataset_config = config["dataset"] # Get dataset configuration input_data_path = args.input_data_path + "/" + dataset_config["input_data_location"] output_data_path = (args.input_data_path + "/output_" + pipeline_name + "_" + evalaution_exec_id) print("Data input location:", input_data_path) print("Data output location:", output_data_path) algorithms_config = config["algorithms"] # Get algorithms configuration model_config = find_model_by_name(config["models"], "llama2-7b") model_id = model_config["model_id"] model_version = model_config["model_version"] evaluation_config = model_config["evaluation_config"] endpoint_name = model_config["endpoint_name"] model_deploy_config = model_config["deployment_config"] deploy_instance_type = model_deploy_config["instance_type"] deploy_num_instances = model_deploy_config["num_instances"] # Construct the steps processed_data_path = step(preprocess, name="preprocess")(input_data_path, output_data_path) endpoint_name = step(deploy, name=f"deploy_{model_id}")(model_id, model_version, endpoint_name, deploy_instance_type, deploy_num_instances,) evaluation_results = step(evaluation, name=f"evaluation_{model_id}", keep_alive_period_in_seconds=1200)(processed_data_path, endpoint_name, dataset_config, model_config, algorithms_config, output_data_path,) last_pipeline_step = evaluation_results if model_config["cleanup_endpoint"]: cleanup = step(cleanup, name=f"cleanup_{model_id}")(model_id, endpoint_name) get_step(cleanup).add_depends_on([evaluation_results]) last_pipeline_step = cleanup # Define the SageMaker Pipeline pipeline = Pipeline( name=pipeline_name, steps=[last_pipeline_step], ) # Build and run the Sagemaker Pipeline pipeline.upsert(role_arn=sagemaker.get_execution_role()) # pipeline.upsert(role_arn="arn:aws:iam::<...>:role/service-role/AmazonSageMaker-ExecutionRole-<...>") pipeline.start()
Exemplet implementerar utvärderingen av en enda FM genom att förbearbeta den initiala datamängden, distribuera modellen och köra utvärderingen. Den genererade pipeline-riktade acykliska grafen (DAG) visas i följande figur.
Att följa ett liknande tillvägagångssätt och genom att använda och skräddarsy exemplet i Finjustera LLaMA 2-modeller på SageMaker JumpStart, skapade vi pipeline för att utvärdera en finjusterad modell, som visas i följande figur.
Genom att använda de tidigare SageMaker Pipeline-stegen som "Lego"-block utvecklade vi lösningen för Scenario 1 och Scenario 3, som visas i följande figurer. Närmare bestämt GitHub repository gör det möjligt för användaren att utvärdera flera FMs parallellt eller att utföra mer komplex utvärdering genom att kombinera utvärdering av både grundmodeller och finjusterade modeller.
Ytterligare funktioner som är tillgängliga i förvaret inkluderar följande:
- Generering av dynamiska utvärderingssteg: Vår lösning genererar alla nödvändiga utvärderingssteg dynamiskt baserat på konfigurationsfilen för att göra det möjligt för användare att utvärdera valfritt antal modeller. Vi har utökat lösningen för att stödja en enkel integration av nya typer av modeller, som Hugging Face eller Amazon Bedrock.
- Förhindra omdistribuering av slutpunkter: Om en slutpunkt redan finns på plats hoppar vi över distributionsprocessen. Detta gör att användaren kan återanvända slutpunkter med FM:er för utvärdering, vilket resulterar i kostnadsbesparingar och minskad driftsättningstid.
- Slutpunktsrensning: Efter slutförandet av utvärderingen avvecklar SageMaker Pipeline de utplacerade slutpunkterna. Denna funktion kan utökas för att hålla den bästa modellens slutpunkt vid liv.
- Steg för val av modell: Vi har lagt till en platshållare för steg för modellval som kräver affärslogiken för det slutliga modellvalet, inklusive kriterier som kostnad eller latens.
- Modellregistreringssteg: Den bästa modellen kan registreras i Amazon SageMaker Model Registry som en ny version av en specifik modellgrupp.
- Varm pool: SageMaker-hanterade varma pooler låter dig behålla och återanvända tillhandahållen infrastruktur efter slutförandet av ett jobb för att minska fördröjningen för repetitiva arbetsbelastningar
Följande figur illustrerar dessa möjligheter och ett exempel på utvärdering av flera modeller som användarna enkelt och dynamiskt kan skapa med vår lösning i detta GitHub förvaret.
Vi har avsiktligt hållit dataförberedelsen utanför räckvidden eftersom den kommer att beskrivas i ett annat inlägg på djupet, inklusive promptkatalogdesign, promptmallar, promptoptimering. För mer information och relaterade komponentdefinitioner, se FMOps/LLMOps: Operationalisera generativ AI och skillnader med MLOps.
Slutsats
I det här inlägget fokuserade vi på hur man automatiserar och operationaliserar LLMs utvärdering i stor skala med hjälp av Amazon SageMaker Clarify LLM-utvärderingsmöjligheter och Amazon SageMaker Pipelines. Förutom teoretiska arkitekturdesigner har vi exempelkod i detta GitHub repository (med Llama2 och Falcon-7B FM) för att göra det möjligt för kunder att utveckla sina egna skalbara utvärderingsmekanismer.
Följande illustration visar modellutvärderingsarkitektur.
I det här inlägget fokuserade vi på att operationalisera LLM-utvärderingen i skala som visas på vänster sida av illustrationen. I framtiden kommer vi att fokusera på att utveckla exempel som uppfyller hela livscykeln för FM:s till produktion genom att följa riktlinjerna som beskrivs i FMOps/LLMOps: Operationalisera generativ AI och skillnader med MLOps. Detta inkluderar LLM-servering, övervakning, lagring av utdataklassificering som så småningom kommer att utlösa automatisk omvärdering och finjustering och slutligen att använda människor-i-slingan för att arbeta med märkta data eller uppmaningarskataloger.
Om författarna
Dr Sokratis Kartakis är en huvudsaklig maskininlärnings- och driftspecialistlösningsarkitekt för Amazon Web Services. Sokratis fokuserar på att göra det möjligt för företagskunder att industrialisera sin maskininlärning (ML) och generativa AI-lösningar genom att utnyttja AWS-tjänster och forma deras verksamhetsmodell, dvs MLOps/FMOps/LLMOps-fundament, och transformationsfärdplan som utnyttjar bästa utvecklingsmetoder. Han har ägnat 15+ år åt att uppfinna, designa, leda och implementera innovativa end-to-end produktionsnivå ML- och AI-lösningar inom områdena energi, detaljhandel, hälsa, finans, motorsport etc.
Jagdeep Singh Soni är Senior Partner Solutions Architect på AWS baserad i Nederländerna. Han använder sin passion för DevOps, GenAI och byggverktyg för att hjälpa både systemintegratörer och teknikpartners. Jagdeep använder sin bakgrund inom applikationsutveckling och arkitektur för att driva innovation inom sitt team och främja ny teknik.
Dr Riccardo Gatti är en Senior Startup Solution Architect baserad i Italien. Han är en teknisk rådgivare för kunder som hjälper dem att växa sin verksamhet genom att välja rätt verktyg och teknik för att förnya, skala snabbt och bli global på några minuter. Han har alltid varit passionerad för maskininlärning och generativ AI, efter att ha studerat och tillämpat dessa teknologier på olika områden under hela sin arbetskarriär. Han är värd och redaktör för AWS italienska podcast "Casa Startup", tillägnad berättelser om startupgrundare och nya tekniska trender.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/operationalize-llm-evaluation-at-scale-using-amazon-sagemaker-clarify-and-mlops-services/
- : har
- :är
- :inte
- :var
- $UPP
- 1
- 100
- 7
- 9
- a
- Om oss
- accelerera
- tillgång
- noggrannhet
- exakt
- Uppnå
- uppnå
- tvärs
- Agera
- aktivering
- aktiv
- acyklisk
- lagt till
- Dessutom
- Dessutom
- adress
- adekvat
- administrering
- Anta
- Antagande
- framsteg
- rådgivare
- Efter
- mot
- medel
- AI
- AI-lagen
- AI-system
- Syftet
- sikta
- algoritm
- algoritmer
- Justerar
- levande
- Alla
- tillåter
- redan
- också
- alltid
- amason
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon SageMaker-rörledningar
- Amazon SageMaker Studio
- Amazon Web Services
- an
- analysera
- och
- Annan
- svara
- vilken som helst
- api
- Ansökan
- Application Development
- tillämpningar
- tillämpas
- applicerar
- tillvägagångssätt
- lämpligt
- arkitektur
- ÄR
- områden
- Argumentet
- AS
- bedöma
- bedöma
- bedömning
- bedömningar
- At
- revision
- automatisera
- Automatiserad
- Automat
- automatiskt
- Automation
- tillgänglig
- AWS
- bakgrund
- baserat
- grundläggande
- BE
- därför att
- blir
- varit
- beteende
- riktmärke
- riktmärke
- riktmärken
- Fördelarna
- BÄST
- Bättre
- mellan
- Bortom
- förspänning
- partisk
- förspänner
- Block
- båda
- överträdelser
- bredd
- föra
- SLUTRESULTAT
- byggare
- företag
- men
- by
- kallas
- Samtal
- KAN
- kandidat
- kapacitet
- kapabel
- fånga
- Kort
- Karriär
- Vid
- fall
- katalog
- vissa
- utmanar
- egenskaper
- billigare
- ta
- Välja
- valda
- klassificering
- klassificera
- rena
- koda
- sammanhängande
- samarbeta
- kombination
- kombinera
- Gemensam
- samfundet
- jämförbar
- jämföra
- jämfört
- jämförelse
- Komplement
- fullbordan
- komplex
- Komplexiteten
- Efterlevnad
- följa
- komponent
- komponenter
- innefattande
- beräkningar
- Compute
- begrepp
- Oro
- Genomför
- ledande
- beteenden
- konfiguration
- Kontakta
- ansluter
- anses
- består
- konstruera
- konsumenter
- Behållare
- innehåller
- innehåll
- Innehållsgenerering
- sammanhang
- kontinuerligt
- kontinuerlig
- Däremot
- konversera
- konversationer
- konvertera
- korrekt
- Pris
- kostnadsbesparingar
- kostsam
- Kostar
- täcka
- skapa
- skapas
- Skapa
- skapande
- kriterier
- kritisk
- avgörande
- beställnings
- Kunder
- DAG
- datum
- Förberedelse av data
- datavetare
- datasäkerhet
- datauppsättning
- datamanipulering
- datauppsättningar
- datum Tid
- beslutar
- Beslutsfattande
- beslut
- dedicerad
- djup
- djupdykning
- Standard
- definiera
- definitioner
- levererar
- Efterfrågan
- beroenden
- beror
- distribuera
- utplacerade
- utplacera
- utplacering
- djup
- beskriven
- betecknad
- utformade
- design
- mönster
- lust
- önskas
- detaljerad
- detaljer
- utveckla
- utvecklade
- utveckla
- Utveckling
- skillnader
- olika
- rikta
- riktad
- Dyk
- flera
- do
- inte
- domän
- domäner
- driv
- under
- dynamiskt
- e
- varje
- lätt
- lätt
- redaktör
- Effektiv
- effektivitet
- effektiv
- effektivt
- ansträngning
- antingen
- element
- annars
- anställd
- möjliggöra
- möjliggör
- möjliggör
- början till slut
- Slutpunkt
- energi
- Ingenjörer
- förbättra
- säkerställa
- säkerställer
- säkerställa
- Företag
- företag
- epok
- lika
- speciellt
- väsentlig
- etc
- EU
- utvärdera
- utvärderade
- utvärdering
- utvärdering
- Även
- så småningom
- exempel
- exempel
- verkställande
- befintliga
- förväntningar
- förväntat
- påskynda
- utnyttja
- förlänga
- förlängas
- extern
- extraktion
- f1
- Ansikte
- underlättande
- faktorer
- rättvisa
- Falls
- falsk
- kända
- SNABB
- snabbare
- Leverans
- Med
- återkoppling
- få
- fält
- Figur
- siffror
- Fil
- slutlig
- Slutligen
- finansiering
- finansiella
- Finansiell sektor
- Förnamn
- Flexibilitet
- Fokus
- fokuserade
- fokuserar
- följt
- efter
- följer
- För
- formen
- fundament
- Stiftelser
- grundare
- Ramverk
- ramar
- ofta
- från
- uppfylla
- full
- funktionaliteter
- funktionalitet
- grundläggande
- Vidare
- framtida
- samla
- Allmänt
- generell mening
- generera
- genereras
- genererar
- generera
- generering
- generativ
- Generativ AI
- skaffa sig
- ges
- Välgörenhet
- Go
- bevilja
- diagram
- Grupp
- Gruppens
- Odling
- sidan
- skadliga
- Utnyttja
- Har
- har
- he
- Hälsa
- kraftigt
- hjälpa
- hjälpa
- hjälper
- Hög
- hög risk
- gångjärn
- hans
- innehav
- värd
- Hur ser din drömresa ut
- How To
- Men
- html
- HTTPS
- humant
- i
- identifierade
- identifierar
- identifiera
- if
- illustrerar
- bilder
- genomföra
- genomföra
- redskap
- importera
- vikt
- förbättring
- förbättringar
- in
- innefattar
- innefattar
- Inklusive
- Inkorporerad
- införlivande
- indikatorer
- industrier
- informationen
- informeras
- Infrastruktur
- inledande
- förnya
- Innovation
- innovativa
- ingång
- ingångar
- integrera
- integrering
- avsiktligt
- interaktioner
- inre
- in
- införa
- åberopas
- engagera
- involverade
- involverar
- ISO
- IT
- italienska
- Italien
- artikel
- iteration
- DESS
- Jobb
- resa
- jpg
- Ha kvar
- hålls
- Nyckel
- kunskap
- språk
- Large
- större
- Efternamn
- slutligen
- Latens
- leda
- topplistor
- ledande
- inlärning
- lär
- vänster
- Låt
- hävstångs
- Bibliotek
- livscykel
- tycka om
- Begränsad
- LINK
- Lama
- LLM
- läge
- Logiken
- Låg
- Maskinen
- maskininlärning
- Huvudsida
- bibehålla
- upprätthåller
- förvaltade
- manipulerings
- manipulationer
- manuell
- många
- Maj..
- Samtidigt
- mäta
- åtgärder
- mekanismer
- metadata
- metod
- metoder
- metriska
- Metrics
- minuter
- desinformation
- Mildra
- förmildrande
- ML
- MLOps
- modell
- modeller
- Modulerna
- Övervaka
- övervakning
- mer
- mest
- motiverad
- motorsports
- mycket
- multipel
- måste
- namn
- nödvändigt för
- Behöver
- behov
- Nederländerna
- Nya
- Ny teknik
- Nästa
- icke-experter
- Notera
- anteckningsbok
- nyanser
- antal
- of
- erbjudanden
- Ofta
- on
- gång
- ONE
- pågående
- endast
- öppen källkod
- drift
- drift
- Verksamhet
- Åsikter
- optimering
- or
- OS
- Övriga
- vår
- ut
- Resultat
- utfall
- produktion
- utgångar
- utestående
- över
- övergripande
- egen
- ägare
- Parallell
- parametrar
- särskilt
- särskilt
- partnern
- partner
- brinner
- brinner
- bana
- mönster
- Personer
- Utföra
- prestanda
- föreställningar
- utför
- fas
- rörledning
- Plats
- platshållare
- plato
- Platon Data Intelligence
- PlatonData
- PoC
- podcast
- Punkt
- poolen
- Pools
- Inlägg
- potentiell
- kraft
- drivs
- praxis
- Precision
- beredning
- förbereda
- Närvaron
- förhindra
- föregående
- primär
- Principal
- Principerna
- privatpolicy
- privat
- Problem
- förfaranden
- process
- processer
- bearbetning
- Produktion
- progression
- prominens
- löfte
- främja
- prompter
- bevis
- bevis på koncept
- egenskaper
- proprietary
- skydda
- Bevisa
- ge
- leverantörer
- ger
- tillhandahålla
- allmän
- publicly
- Syftet
- Python
- kvalitativ
- kvalitet
- kvantitativ
- fråga
- område
- Betygsätta
- betyg
- verklig
- verkliga världen
- realtid
- minska
- Minskad
- reducerande
- hänvisa
- referens
- registrerat
- Registrering
- register
- regelbunden
- reglerad
- reglerade industrier
- föreskrifter
- relaterad
- relevans
- relevanta
- tillförlitlighet
- repetitiva
- rapport
- Rapportering
- Rapport
- Repository
- representativ
- Obligatorisk
- Kräver
- forskning
- forskare
- Resursintensiv
- Resurser
- ansvaret
- ansvarig
- resulterande
- Resultat
- detaljhandeln
- behålla
- avkastning
- återanvända
- översyn
- revolutionera
- höger
- rigorös
- Stigit
- Risk
- risker
- färdplan
- robusta
- robusthet
- Roll
- roller
- Körning
- rinnande
- kör
- s
- säker
- skyddsåtgärder
- sagemaker
- SageMaker-rörledningar
- Besparingar
- skalbarhet
- skalbar
- Skala
- scenario
- scenarier
- Forskare
- vetenskapsmän
- omfattning
- göra
- skript
- sDK
- sömlöst
- sektioner
- sektor
- säkra
- säkerhet
- säkerhetsrisker
- välj
- vald
- väljer
- Val
- senior
- känsla
- tjänar
- service
- Tjänster
- portion
- session
- in
- formning
- Dela
- show
- visas
- Visar
- sida
- signifikant
- liknande
- förenklar
- helt enkelt
- eftersom
- enda
- Small
- lösning
- Lösningar
- LÖSA
- några
- Källa
- span
- specialist
- specifik
- specifikt
- spent
- staging
- intressenter
- standardisera
- standarder
- stanford
- Starta
- startar
- start
- status
- Steg
- Steg
- Fortfarande
- förvaring
- lagra
- Upplevelser för livet
- misslyckande
- okomplicerad
- strukturerade
- studerade
- studio
- stil
- Senare
- sådana
- SAMMANFATTNING
- stödja
- system
- System
- skrädderi
- uppgift
- uppgifter
- grupp
- lag
- Teknisk
- tekniker
- teknisk
- Tekniken
- Teknologi
- mallar
- testa
- testare
- Testning
- tester
- text
- än
- den där
- Smakämnen
- Framtiden
- deras
- Dem
- sedan
- teoretiska
- vari
- därför
- Dessa
- de
- detta
- de
- tre
- Genom
- hela
- tid
- till
- tillsammans
- verktyg
- verktyg
- spår
- Tåg
- tränad
- Utbildning
- tåg
- Transformation
- övergång
- transitio
- Översättning
- Trender
- utlösa
- sann
- trovärdig
- två
- typer
- typisk
- Ytterst
- obehörig
- förstå
- förståelse
- utan motstycke
- kommande
- användning
- användningsfall
- Begagnade
- Användare
- användare
- användningar
- med hjälp av
- vanligen
- utnyttja
- BEKRÄFTA
- Värdefulla
- olika
- version
- versioner
- via
- avgörande
- sårbarheter
- vill
- varm
- we
- webb
- webbservice
- VÄL
- były
- Vad
- när
- som
- medan
- VEM
- bred
- Brett utbud
- wikipedia
- kommer
- med
- inom
- utan
- Arbete
- arbetsflöde
- arbetssätt
- världen
- jaml
- år
- Avkastning
- Om er
- Din
- zephyrnet