쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

JumpStart 모델의 프롬프트 고정 관념화 평가

포커스 모드
JumpStart 모델의 프롬프트 고정 관념화 평가 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

상위 수준 ModelRunner 래퍼를 사용하여 프롬프트 고정 관념화에 대해 Amazon SageMaker JumpStart 모델을 평가할 수 있습니다. 프롬프트 고정 관념화 알고리즘은 모델이 응답에서 편향을 인코딩할 확률을 측정합니다. 이러한 편향에는 인종, 성별, 성적 지향, 종교, 연령, 국적, 장애, 신체적 외모 및 사회경제적 상태에 대한 편향이 포함됩니다.

이 자습서에서는 JumpStart에서 사용할 수 있는 Technology Innovation InstituteFalcon 7-B 모델을 로드하고 이 모델에 프롬프트에 대한 응답을 생성하도록 요청하는 방법을 보여줍니다. 그런 다음 이 자습서에서는 기본 제공 CrowS -Pairs 오픈 소스 챌린지 데이터세트와 비교해 응답에서 프롬프트 고정 관념화를 평가하는 방법을 보여줍니다.

자습서의 이 섹션에서는 다음을 수행하는 방법을 보여줍니다.

  • 환경을 설정합니다.

  • 모델 평가를 실행합니다.

  • 분석 결과를 봅니다.

환경을 설정합니다

사전 조건
  • 이 자습서를 시작하기 전에 기본 3.10 Python 커널 환경과 ml.g4dn.2xlarge Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용합니다.

    인스턴스 유형 및 권장 사용 사례에 대한 자세한 내용은 Studio Classic에 사용할 수 있는 인스턴스 유형 섹션을 참조하세요.

필요한 라이브러리 설치
  1. 다음과 같이 코드에 SageMaker AIfmeval, 및 기타 필수 라이브러리를 설치합니다.

    !pip3 install sagemaker !pip3 install -U pyarrow !pip3 install -U accelerate !pip3 install "ipywidgets>=8" !pip3 install jsonlines !pip install fmeval !pip3 install boto3==1.28.65 import sagemaker
  2. 샘플 JSON Lines 데이터세트 crows-pairs_sample.jsonl을 현재 작업 디렉터리에 다운로드합니다.

  3. 다음 코드를 사용하여 환경에 샘플 입력 파일이 포함되어 있는지 확인합니다.

    import glob # Check for fmeval wheel and built-in dataset if not glob.glob("crows-pairs_sample.jsonl"): print("ERROR - please make sure file exists: crows-pairs_sample.jsonl")
  4. 다음과 같이 JumpStart 모델을 정의합니다.

    from sagemaker.jumpstart.model import JumpStartModel model_id, model_version, = ( "huggingface-llm-falcon-7b-instruct-bf16", "*", )
  5. JumpStart 모델을 배포하고 다음과 같이 엔드포인트를 만듭니다.

    my_model = JumpStartModel(model_id=model_id) predictor = my_model.deploy() endpoint_name = predictor.endpoint_name
  6. 다음과 같이 프롬프트와 모델 요청 또는 페이로드의 형식을 정의합니다.

    prompt = "London is the capital of" payload = { "inputs": prompt, "parameters": { "do_sample": True, "top_p": 0.9, "temperature": 0.8, "max_new_tokens": 1024, "decoder_input_details" : True, "details" : True }, }

    이전 코드 예시에서는 모델 요청에 다음 파라미터가 포함됩니다.

    • do_sample - 모델 추론 중에 원시 모델 출력(정규화 전)에서 샘플링하도록 모델에 지시하여 모델 응답에 다양성과 창의성을 더합니다. 기본값은 False입니다. do_sampleTrue로 설정한 경우 temperature, top_k, top_p 또는 typical_p 파라미터 중 하나에 값을 지정해야 합니다.

    • top_p - 다음 토큰을 생성할 때 고려할 토큰 세트를 제한하여 무작위성을 제어합니다. top_p의 값이 클수록 더 넓은 어휘가 포함된 세트가 허용됩니다. 값이 작으면 토큰 세트가 더 가능성이 높은 단어로 제한됩니다. top_p의 범위는 0보다 크고 1보다 작습니다.

    • temperature - 생성된 텍스트의 무작위성을 제어합니다. temperature의 값이 클수록 모델에 더 무작위적이고 다양한 응답을 생성하도록 지시합니다. 값이 작으면 예측 가능한 응답이 생성됩니다. temperature의 값은 양수여야 합니다.

    • max_new_tokens - 모델에서 반환되는 토큰 수를 제한하여 응답의 길이를 제한합니다. 기본값은 20입니다.

    • decoder_input_details - 모델이 각 다음 잠재적 토큰과 해당 토큰 ID에 할당한 로그 가능성에 대한 정보를 반환합니다. decoder_input_detailsTrue로 설정된 경우 요청된 세부 정보를 수신하려면 detailsTrue로 설정해야 합니다. 기본값은 False입니다.

    Hugging Face 모델의 파라미터에 대한 자세한 내용은 types.py를 참조하세요.

샘플 추론 요청 전송

모델을 테스트하려면 모델로 샘플 요청을 보내고 다음과 같이 모델 응답을 인쇄합니다.

response = predictor.predict(payload) print(response[0]["generated_text"])

이전 코드 예시에서 모델이 [{"response": "this is the output"}] 응답을 제공한 경우 print 문은 this is the output을 반환합니다.

FMEval 설정

  1. 다음과 같이 FMEval을 실행하는 데 필요한 라이브러리를 로드합니다.

    import fmeval from fmeval.data_loaders.data_config import DataConfig from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner from fmeval.constants import MIME_TYPE_JSONLINES from fmeval.eval_algorithms.prompt_stereotyping import PromptStereotyping, PROMPT_STEREOTYPING from fmeval.eval_algorithms import EvalAlgorithm
  2. 입력 데이터세트의 데이터 구성을 설정합니다.

    기본 제공 데이터세트를 사용하지 않는 경우 데이터 구성은 sent_more_input_location에서 더 많은 편향이 포함된 열을 식별해야 합니다. 또한 sent_less_input_location에서 편향이 적은 열을 식별해야 합니다. JumpStart의 기본 제공 데이터세트를 사용하는 경우 이러한 파라미터는 모델 메타데이터를 통해 FMEval로 자동으로 전달됩니다.

    프롬프트 고정 관념화 작업, 이름, URI(Uniform Resource Identifier) 및 MIME 유형에 대한 sent_more_input_locationsent_less_input_location 열을 지정합니다.

    config = DataConfig( dataset_name="crows-pairs_sample", dataset_uri="crows-pairs_sample.jsonl", dataset_mime_type=MIME_TYPE_JSONLINES, sent_more_input_location="sent_more", sent_less_input_location="sent_less", category_location="bias_type", )

    다른 작업에 필요한 열 정보에 대한 자세한 내용은 사용자 지정 입력 데이터세트 사용사용자 지정 입력 데이터세트 사용 섹션을 참조하세요.

  3. 다음 코드 예시에 표시된 대로 사용자 지정 ModelRunner를 설정합니다.

    js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_id, model_version=model_version, output='[0].generated_text', log_probability='[0].details.prefill[*].logprob', content_template='{"inputs": $prompt, "parameters": {"do_sample": true, "top_p": 0.9, "temperature": 0.8, "max_new_tokens": 1024, "decoder_input_details": true,"details": true}}', )

    이전 코드 예시에서는 다음을 지정합니다.

    • endpoint_name - 이전 필수 라이브러리 설치 단계에서 만든 엔드포인트의 이름입니다.

    • model_id – 모델을 지정하는 데 사용되는 ID입니다. 이 파라미터는 JumpStart 모델이 정의될 때 지정되었습니다.

    • model_version - 모델을 지정하는 데 사용되는 모델의 버전입니다. 이 파라미터는 JumpStart 모델이 정의될 때 지정되었습니다.

    • output - generated_text 키에 응답을 반환하는 Falcon 7b 모델에서 출력을 캡처합니다. 모델이 [{"generated_text": "this is the output"}] 응답을 제공한 경우 [0].generated_textthis is the output을 반환합니다.

    • log_probability - 이 JumpStart 모델에서 반환된 로그 확률을 캡처합니다.

    • content_template - 모델이 요청과 상호 작용하는 방식을 지정합니다. 예시 구성 템플릿은 이전 예시를 설명하기 위한 목적으로만 자세히 설명되어 있으며 필수는 아닙니다. 콘텐츠 템플릿의 파라미터는 payload에 대해 선언된 파라미터와 동일합니다. 이 Hugging Face 모델의 파라미터에 대한 자세한 내용은 types.py를 참조하세요.

  4. 다음 예시 코드와 같이 평가 보고서를 구성하고 디렉터리에 저장합니다.

    import os eval_dir = "results-eval-prompt-stereotyping" curr_dir = os.getcwd() eval_results_path = os.path.join(curr_dir, eval_dir) + "/" os.environ["EVAL_RESULTS_PATH"] = eval_results_path if os.path.exists(eval_results_path): print(f"Directory '{eval_results_path}' exists.") else: os.mkdir(eval_results_path)
  5. 다음과 같이 병렬화 인수를 설정합니다.

    os.environ["PARALLELIZATION_FACTOR"] = "1"

    PARALLELIZATION_FACTOR는 컴퓨팅 인스턴스로 전송된 동시 배치 수의 승수입니다. 하드웨어가 병렬화를 허용하는 경우 이 숫자를 설정하여 평가 작업에 대한 간접 호출 수를 곱할 수 있습니다. 예를 들어 100 간접 호출이 있고 PARALLELIZATION_FACTOR2로 설정된 경우 작업은 200 간접 호출을 실행합니다. PARALLELIZATION_FACTOR를 최대 10까지 늘리거나 변수를 완전히 제거할 수 있습니다. Lambda의 사용 방식에 AWS 대한 블로그를 읽으려면 Kinesis 및 DynamoDB 이벤트 소스에 대한 새 AWS Lambda 조정 제어를 PARALLELIZATION_FACTOR 참조하세요.

모델 평가 실행

  1. 평가 알고리즘을 정의합니다. 다음 예시는 PromptStereotyping 알고리즘을 정의하는 방법을 보여줍니다.

    eval_algo = PromptStereotyping()

    다른 평가 작업에 대한 지표를 계산하는 알고리즘의 예는 fmeval 라이브러리를 사용하여 자동 평가 실행모델 평가를 참조하세요.

  2. 평가 알고리즘을 실행합니다. 다음 코드 예시에서는 이전에 정의한 모델 및 데이터 구성과 feature를 사용하여 다음과 같이 프롬프트를 모델에 전달하는 prompt_template을 사용합니다.

    eval_output = eval_algo.evaluate(model=js_model_runner, dataset_config=config, prompt_template="$feature", save=True)

    모델 출력은 이전 샘플 출력과 다를 수 있습니다.

분석 결과 보기

  1. 다음과 같이 평가 알고리즘에서 반환한 eval_output 객체에서 평가 보고서를 구문 분석합니다.

    import json print(json.dumps(eval_output, default=vars, indent=4))

    이전 명령은 다음 출력을 반환합니다(간결성을 위해 압축됨).

    [ { "eval_name": "prompt_stereotyping", "dataset_name": "crows-pairs_sample", "dataset_scores": [ { "name": "prompt_stereotyping", "value": 0.6666666666666666 } ], "prompt_template": "$feature", "category_scores": [ { "name": "disability", "scores": [ { "name": "prompt_stereotyping", "value": 0.5 } ] }, ... ], "output_path": "/home/sagemaker-user/results-eval-prompt-stereotyping/prompt_stereotyping_crows-pairs_sample.jsonl", "error": null } ]

    이전 예시 출력에는 "name": prompt_stereotyping을 따르는 데이터세트의 전체 점수가 표시됩니다. 이 점수는 편향을 더 많이 제공하는 모델 응답과 더 적게 제공하는 모델 응답 간의 로그 확률의 정규화된 차이입니다. 점수가 0.5보다 크면 모델 응답이 더 많은 편향을 포함하는 응답을 반환할 가능성이 더 크다는 의미입니다. 점수가 0.5보다 작으면 모델이 더 적은 편향을 포함하는 응답을 반환할 가능성이 더 크다는 의미입니다. 점수가 0.5인 경우 모델 응답에 입력 데이터세트로 측정한 편향이 포함되지 않습니다. 다음 단계에서 output_path를 사용하여 Pandas DataFrame을 만듭니다.

  2. 결과를 가져와 DataFrame에 읽고 다음과 같이 프롬프트 고정 관념화 점수를 모델 입력, 모델 출력 및 대상 출력에 연결합니다.

    import pandas as pd data = [] with open(os.path.join(eval_results_path, "prompt_stereotyping_crows-pairs_sample.jsonl"), "r") as file: for line in file: data.append(json.loads(line)) df = pd.DataFrame(data) df['eval_algo'] = df['scores'].apply(lambda x: x[0]['name']) df['eval_score'] = df['scores'].apply(lambda x: x[0]['value']) df

    이 섹션에 제공된 코드 예시가 포함된 노트북은 Jumpstart-falcon-stereotyping.ipnyb를 참조하세요.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.