Views
No views yet
EleutherAI/polyglot-ko-12.8b.1peft_model_id = "jangmin/qlora-polyglot-ko-12.8b-food-order-understanding-32K"
2
3config = PeftConfig.from_pretrained(peft_model_id)
4
5bnb_config = BitsAndBytesConfig(
6 load_in_4bit=True,
7 bnb_4bit_use_double_quant=True,
8 bnb_4bit_quant_type="nf4",
9 bnb_4bit_compute_dtype=torch.bfloat16
10)
11model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, quantization_config=bnb_config, cache_dir=cache_dir, device_map={"":0})
12model = PeftModel.from_pretrained(model, peft_model_id)
13tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, cache_dir=cache_dir)
14
15model.eval()1instruction_prompt_template = """
2다음은 매장에서 고객이 음식을 주문하는 주문 문장이다. 이를 분석하여 음식명, 옵션, 수량을 추출하여 고객의 의도를 이해하고자 한다.
3분석 결과를 완성해주기 바란다.
4
5### 주문 문장: {0} ### 분석 결과:
6"""
7def gen(x):
8 q = instruction_prompt_template.format(x)
9 gened = model.generate(
10 **tokenizer(
11 q,
12 return_tensors='pt',
13 return_token_type_ids=False
14 ).to('cuda'),
15 max_new_tokens=256,
16 early_stopping=True,
17 do_sample=True,
18 eos_token_id=tokenizer.eos_token_id
19 )
20 decoded_results = tokenizer.batch_decode(gened, skip_special_tokens=True)
21 return decoded_results[0]print(gen("오늘은 비가오니깐 이거 먹자. 삼선짬뽕 곱배기하구요, 사천 탕수육 중짜 한그릇 주세요."))다음은 매장에서 고객이 음식을 주문하는 주문 문장이다. 이를 분석하여 음식명, 옵션, 수량을 추출하여 고객의 의도를 이해하고자 한다.
분석 결과를 완성해주기 바란다.
### 주문 문장: 오늘은 비가오니깐 이거 먹자. 삼선짬뽕 곱배기하구요, 사천 탕수육 중짜 한그릇 주세요. ### 분석 결과:
분석 결과 0: 음식명:삼선짬뽕,옵션:곱배기
분석 결과 1: 음식명:사천 탕수육,옵션:중짜,수량:한그릇1python qlora.py \
2 --cache_dir /Jupyter/huggingface/.cache \
3 --model_name_or_path EleutherAI/polyglot-ko-12.8b \
4 --output_dir ../output/polyglot-ko-food-order-understanding-12.8b \
5 --logging_steps 10 \
6 --save_strategy steps \
7 --data_seed 42 \
8 --save_steps 200 \
9 --save_total_limit 40 \
10 --evaluation_strategy steps \
11 --eval_dataset_size 1024 \
12 --max_eval_samples 1000 \
13 --per_device_eval_batch_size 8 \
14 --max_new_tokens 32 \
15 --dataloader_num_workers 3 \
16 --group_by_length \
17 --logging_strategy steps \
18 --remove_unused_columns False \
19 --do_train \
20 --do_eval \
21 --lora_r 64 \
22 --lora_alpha 16 \
23 --lora_modules all \
24 --double_quant \
25 --quant_type nf4 \
26 --bf16 \
27 --bits 4 \
28 --warmup_ratio 0.03 \
29 --lr_scheduler_type constant \
30 --gradient_checkpointing \
31 --dataset /Jupyter/dev_src/ASR-for-noisy-edge-devices/data/food-order-understanding-32k.json \
32 --target_max_len 512 \
33 --per_device_train_batch_size 16 \
34 --gradient_accumulation_steps 1 \
35 --max_steps 1000 \
36 --eval_steps 200 \
37 --learning_rate 0.0002 \
38 --adam_beta2 0.999 \
39 --max_grad_norm 0.3 \
40 --lora_dropout 0.05 \
41 --weight_decay 0.0 \
42 --seed 0 \
43 --report_to tensorboardgpt-3.5-turbo-16k. A prompt template is desginged to generate examples of sentence pairs of a food order and its understanding. Total 32k examples were generated.
Some generated examples are as follows:1{
2 'input': '\n다음은 매장에서 고객이 음식을 주문하는 주문 문장이다. 이를 분석하여 음식명, 옵션, 수량을 추출하여 고객의 의도를 이해하고자 한다.\n분석 결과를 완성해주기 바란다.\n\n### 주문 문장: 하이, 디트로이트 스타일 피자 XL 두판 주세요. ### 분석 결과: \n',
3 'output': '분석 결과 0: 음식명:디트로이트 스타일 피자,옵션:XL,수량:두판'
4},
5{
6 'input': '\n다음은 매장에서 고객이 음식을 주문하는 주문 문장이다. 이를 분석하여 음식명, 옵션, 수량을 추출하여 고객의 의도를 이해하고자 한다.\n분석 결과를 완성해주기 바란다.\n\n### 주문 문장: 저는 후라이드치킨 반마리와 팟타이 한그릇을 주문하고 싶습니다. ### 분석 결과: \n',
7 'output': '분석 결과 0: 음식명:후라이드치킨,수량:반마리\n분석 결과 1: 음식명:팟타이,수량:한그릇'
8}