TEEPUT / AIChatBot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ“Œ Intro


정석일 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“€μœΌλ©΄μ„œ μ œμž‘ν•œ λ‚˜λ§Œμ˜ μ±—λ΄‡λΉ„μ„œμž…λ‹ˆλ‹€

ChatGPT, Copilot λ“± μ˜€ν”ˆ AI듀은 μ–΄λŠ ν•œ 뢄야에 νŠΉν™”λœ AIκ°€ λͺ¨λ“  뢄야에 λŒ€ν•΄ 지식이 μžˆμ–΄ λ‚΄κ°€ μ›ν•˜λŠ” 닡변이 μ•ˆλ‚˜μ˜¬ λ•Œλ„ μžˆλŠ”λ° κ·Έ 점을 λ³΄μ•ˆν•˜κ³ μž ν•˜μ—¬ ν•œ λΆ„μ•Όλ§Œ λ”₯λŸ¬λ‹ μ‹œμΌœ ν•„μš”ν•œ λ‹΅λ³€λ§Œ μ£ΌλŠ” AI λͺ¨λΈμ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€

λ¬Όλ‘  AI λͺ¨λΈμ΄ ν•™μŠ΅λŸ‰κ³Ό ν•™μŠ΅μ‹œν‚¬ λ°μ΄ν„°μ˜ μ •ν™•μ„± λ“± μ—¬λŸ¬ μš”μ†Œλ“€μ΄ λͺ¨μ—¬ 높은 μˆ˜μ€€μœΌλ‘œ μ™„μ„±λ˜λ―€λ‘œ 개인이 ν•  수 μžˆλŠ” λ”₯λŸ¬λ‹μ—μ„œλŠ” ν•œκ³„κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€

μ œκ°€ λ§Œλ“  상황에 λ§žμΆ°μ„œ ν—€μ–΄μŠ€νƒ€μΌλ§μ„ μΆ”μ²œν•˜λŠ” AIλŠ” μ•½ 500개의 λ°μ΄ν„°λ‘œ 10000번 이상 ν•™μŠ΅μ‹œμΌ°μŠ΅λ‹ˆλ‹€

Python 라이브러리인 Transformersλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•™μŠ΅μ‹œμΌ°κ³  Colab의 GPUλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•™μŠ΅μ‹œμΌ°μŠ΅λ‹ˆλ‹€

πŸ“Œ Implementation


myutil 디렉토리 call_ai_api.py 파일의 AI_URL λΆ€λΆ„μ˜ μžμ‹ μ˜ 둜컬 ip둜 μž…λ ₯ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€
λ§ˆμ°¬κ°€μ§€λ‘œ main2.py 파일의 λΌμš°νŒ… 호슀트 ipλ₯Ό μžμ‹ μ˜ 둜컬 ip둜 μž…λ ₯ν•˜μ…”μ•Όν•©λ‹ˆλ‹€

call_ai_api.py:14 AI_URL = "http://[localhostip]:9999/api/get_data"
main2.py:147 app.run(host='[localhostip]', port=9999, debug=False)

데이터셋은 인터넷 검색 및 크둀링 AIλͺ¨λΈ μ‚¬μš© ν•˜μ—¬ κ΅¬μΆ•ν•˜μ˜€μŠ΅λ‹ˆλ‹€

image

npm start 둜 nodejs ν”„λ‘ νŠΈμ—”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€κ³ 
python main2.py둜 λ°±μ—”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚΅λ‹ˆλ‹€
λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€κ³  http://localhost:5555/ μ—μ„œ λ™μž‘ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€

ν•„μš” nodejs 라이브러리

npm install express --save
npm install express-generator -g --save
npm install fs --save
npm install mysql --save
npm install path --save
npm install body-parser --save
npm i dotenv
npm i cors
npm i nodemon
npm install mobile-detect
npm install request --save
npm install jquery
npm install request-ip --save
npm install jsonwebtoken --save
npm install cookie-parser --save
npm install moment --save
npm install winston --save
npm install winston-daily-rotate-file --save
npm install ip --save


ν•„μš” python 라이브러리

pip install flask
python -m pip install selenium 크둀링 라이브러리
python -m pip install torch torchvision torchaudio νŒŒμ΄ν† μΉ˜ λ”₯λŸ¬λ‹ 라이브러리
pip install transformers


image 초기 ν™”λ©΄μž…λ‹ˆλ‹€ μ±„νŒ… ν˜•μ‹μœΌλ‘œ μžμ‹ μ΄ μ›ν•˜λŠ” prompt λ₯Ό μž…λ ₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€ ex) "μ˜€ν”ΌμŠ€ ν—€μ–΄ μΆ”μ²œν•΄μ€˜"

닡변은 둜컬 ν™˜κ²½(사양)에 따라 μ‹œκ°„μ°¨κ°€ μžˆμŠ΅λ‹ˆλ‹€

image 디렉토리 ꡬ성

λͺ¨λΈ ν•™μŠ΅ (_colab)

ν•™μŠ΅ 데이터셋 생성: Excel νŒŒμΌμ—μ„œ 데이터λ₯Ό 읽고, μ „μ²˜λ¦¬ν•œ ν›„ JSON 파일둜 λ³€ν™˜ν•©λ‹ˆλ‹€. 이 데이터셋은 KoGPT λͺ¨λΈμ„ ν•™μŠ΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

KoGPT λͺ¨λΈ ν•™μŠ΅: 사전 ν•™μŠ΅λœ KoGPT λͺ¨λΈμ„ λ‘œλ“œν•˜κ³ , ν•™μŠ΅ 데이터셋을 μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚΅λ‹ˆλ‹€. 이후 λͺ¨λΈμ„ ν‰κ°€ν•˜κ³  μ €μž₯ν•©λ‹ˆλ‹€.

ν•™μŠ΅ 데이터셋 생성:

def preprocess(text):
    # μ „μ²˜λ¦¬ ν•¨μˆ˜ μ •μ˜

def write_json(data, file_path):
    # JSON 파일 μž‘μ„±

def main(input_xlsx, output_json):
    # 메인 ν•¨μˆ˜ μ •μ˜

KoGPT λͺ¨λΈ ν•™μŠ΅:

# GPUκ°€ μ‚¬μš© κ°€λŠ₯ν•œ 경우 μ‚¬μš©ν•˜λ„λ‘ μ„€μ •
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# epoch 크기 μ‘°μ • : ν•™μŠ΅λŸ‰
EPOCH = 1 # 1 ~ 1000 κ°’

# μ „μ²˜λ¦¬λœ 데이터 생성
train_input_ids, train_attention_masks = preprocess(train_df)
val_input_ids, val_attention_masks = preprocess(val_df)

# λͺ¨λΈ ν•™μŠ΅
model.train()

# λͺ¨λΈ 평가
model.eval()

Fine Tuning:

# ν† ν¬λ‚˜μ΄μ € λ‘œλ“œ
tokenizer = PreTrainedTokenizerFast.from_pretrained("skt/kogpt2-base-v2",
    bos_token='</s>', eos_token='</s>', unk_token='<unk>',
    pad_token='<pad>', mask_token='<mask>')

# 사전 ν•™μŠ΅λœ μ–Έμ–΄λͺ¨λΈ(skt/kogpt2-base-v2) λ‘œλ“œ
model = GPT2LMHeadModel.from_pretrained('skt/kogpt2-base-v2')

# SFT_dataset 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ ν›ˆλ ¨ 데이터셋 객체λ₯Ό 생성
train_dataset = SFT_dataset(data_path=args.data_path, tokenizer=tokenizer)

# λͺ¨λΈ ν›ˆλ ¨
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)

# λͺ¨λΈ 인퍼런슀
generator = pipeline('text-generation', model=sOutput_FineTunning_Result_Directory, tokenizer=tokenizer)

이 μ½”λ“œλŠ” 데이터 μ „μ²˜λ¦¬, λͺ¨λΈ μ„€μ •, ν•™μŠ΅ 및 평가, 그리고 생성 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 핡심 λΆ€λΆ„μž…λ‹ˆλ‹€

About


Languages

Language:Jupyter Notebook 72.8%Language:Python 24.3%Language:HTML 1.8%Language:Shell 0.5%Language:JavaScript 0.5%Language:CSS 0.1%