그림그리고 싶다
LLM을 활용한 실전 AI 애플리케이션 개발 / 허정준
🔬미세 조정 수행하기
7B 이하 한국어 사전 학습 모델 중 가장 높은 성능을 보이는
beomi/Yi-Ko-6B 모델
기초 모델 평가하기
토크나이저와 모델을 불러와서 하나의 파이프라인으로 만들어 반환하는 함수
예시 데이터를 입력하고 결과 확인
기초 모델로 생성
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
def make_inference_pipeline(model_id):
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
return pipe
model_id = 'beomi/Yi-Ko-6B'
hf_pipe = make_inference_pipeline(model_id)
example = """당신은 SQL을 생성하는 SQL 봇입니다. DDL의 테이블을 활용한 Question을 해결할 수 있는 SQL 쿼리를 생성하세요.
### DDL:
CREATE TABLE players (
player_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
date_joined DATETIME NOT NULL,
last_login DATETIME
);
### Question:
사용자 이름에 'admin'이 포함되어 있는 계정의 수를 알려주세요.
### SQL:
"""
hf_pipe(example, do_sample=False,
return_full_text=False, max_length=512, truncation=True)
# SELECT COUNT(*) FROM players WHERE username LIKE '%admin%';
# ### SQL 봇:
# SELECT COUNT(*) FROM players WHERE username LIKE '%admin%';
# ### SQL 봇의 결과:
# SELECT COUNT(*) FROM players WHERE username LIKE '%admin%'; (생략)
기초 모델 성능 측정
데이터셋을 불러와서 모델을 이용해 sql을 생성, 평가에 사용될 jsonl생성
from datasets import load_dataset
# 데이터셋 불러오기
df = load_dataset("shangrilar/ko_text2sql", "origin")['test']
df = df.to_pandas()
for idx, row in df.iterrows():
prompt = make_prompt(row['context'], row['question'])
df.loc[idx, 'prompt'] = prompt
# sql 생성
gen_sqls = hf_pipe(df['prompt'].tolist(), do_sample=False,
return_full_text=False, max_length=512, truncation=True)
gen_sqls = [x[0]['generated_text'] for x in gen_sqls]
df['gen_sql'] = gen_sqls
# 평가를 위한 requests.jsonl 생성
eval_filepath = "text2sql_evaluation.jsonl"
make_requests_for_gpt_evaluation(df, eval_filepath)
아까 그 비동기 요청 openai함수로 성능 측정
# GPT-4 평가 수행
!python api_request_parallel_processor.py \
--requests_filepath requests/{eval_filepath} \
--save_filepath results/{eval_filepath} \
--request_url https://api.openai.com/v1/chat/completions \
--max_requests_per_minute 2500 \
--max_tokens_per_minute 100000 \
--token_encoding_name cl100k_base \
--max_attempts 5 \
--logging_level 20
모델 성능 18.75%
미세 조정 수행
https://github.com/huggingface/autotrain-advanced/blob/main/src/autotrain/cli/run_llm.py
학습 데이터 정제와 미세 조정
기초 모델 변경
모델 성능 비교
'🤖 AI > AI' 카테고리의 다른 글
🥶 OpenAI_endpoints_chat 매개변수 탐구 (1) | 2025.01.03 |
---|---|
😄 Hugging Face 탐색 (0) | 2024.10.25 |
🔬sLLM 학습하기 : 성능 평가 파이프라인 (0) | 2024.10.24 |
🔬sLLM 학습하기 :Text2SQL 데이터셋 (2) | 2024.10.24 |
🦿딥러닝 실전 : Data Loader (1) | 2024.10.17 |