| | --- |
| | library_name: transformers |
| | --- |
| | |
| | # Model Card for Model ID |
| |
|
| | <!-- Provide a quick summary of what the model is/does. --> |
| |
|
| |
|
| |
|
| | ## Model Details |
| |
|
| | ### Model Description |
| |
|
| | ``` |
| | ์ด ๋ชจ๋ธ์ Google์ ๊ฐ๋ ฅํ ์ํ ์ธ์ด ๋ชจ๋ธ์ธ Gemma-3-1B-it์ ๊ธฐ๋ฐ์ผ๋ก, ํ๊ตญ์ด ๋ฒ์ฃ ์ฌ๊ฑด ๋ณด๊ณ ์ ๋ถ์ ํ์คํฌ์ ๋ง๊ฒ ๋ฏธ์ธ ์กฐ์ (Fine-tuning)๋์์ต๋๋ค. |
| | |
| | # ์ฃผ์ ๊ธฐ๋ฅ |
| | ์ฌ๊ฑด ์ฌ๊ตฌ์ฑ (Context Generation): ์ฌ๊ฑด ๋ณด๊ณ ์์ ๋ด์ฉ๊ณผ ์ฌ์ค ๊ด๊ณ๋ฅผ ๋ถ์ํ์ฌ ๋น์ ์ํฉ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ์ฌ๊ตฌ์ฑํฉ๋๋ค. |
| | ์ฌ๊ฑด ์ ํ ๋ถ๋ฅ (Kind Classification): ์ฌ๊ตฌ์ฑ๋ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ฌ๊ฑด์ ์ข
๋ฅ๋ฅผ ์ ํํ ๋ถ๋ฅํ์ฌ ์ ์ํฉ๋๋ค. |
| | |
| | # ํ์ต ์ ๋ต |
| | (QLoRA)๋ชจ๋ธ ํ์ต์๋ QLoRA (Quantized Low-Rank Adaptation) ๊ธฐ๋ฒ์ด ์ ์ฉ๋์ด, ๋์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ๊ณผ ๋น ๋ฅธ ํ์ต ์๋๋ฅผ ๋ฌ์ฑํ์ต๋๋ค. |
| | |
| | ์์ํ: 4-bit NF4 ์์ํ (BitsAndBytes) |
| | PEFT: LoRA ์ ์ฉ (Rank $r=16$, $\alpha=32$) |
| | ์ต์ ํ: adamw_torch, Learning Rate $2e-4$, Cosine Scheduler |
| | |
| | ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ฒ์ ์ด ๋ชจ๋ธ์ ํ์ต ๋ฐ ์ฌ์ฉ์ ์ํด์๋ ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ๊ถ์ฅ๋ฉ๋๋ค. |
| | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ |
| | transformers : 4.57.3 |
| | accelerate : 1.12.0 |
| | bitsandbytes : 0.48.2 |
| | peft : 0.15.2 |
| | torch : 2.9.0 |
| | ``` |
| |
|
| | ## Uses |
| |
|
| | ```python |
| | from transformers import AutoModelForCausalLM, AutoTokenizer |
| | |
| | |
| | base_model = "chyungwon/police-report-analysis-model" |
| | |
| | tokenizer = AutoTokenizer.from_pretrained(base_model) |
| | |
| | model = AutoModelForCausalLM.from_pretrained( |
| | base_model, |
| | torch_dtype=torch.bfloat16, |
| | device_map="auto" |
| | ) |
| | |
| | |
| | question = """๋ค์ ์ฌ๊ฑด ๋ณด๊ณ ์๋ฅผ ํตํด์ ๋น์ ๋ฒ์ฃ ์ฌ๊ฑด์ ์ฌ๊ตฌ์ฑํด์ฃผ๊ณ , ์ฌ๊ฑด ์ ํ์ ๋ถ๋ฅํด์ค. |
| | |
| | [์ฌ๊ฑด ๋ณด๊ณ ์] |
| | 2024๋
4์ 25์ผ, ์์ธ ์ญ์ค๋์
๊ตฌ์ญ ์ธ๊ทผ์์ ์ด์ฟ์ง ํ๋ฌผ์ฐจ๊ฐ ์ธ๋๋ก ๋์งํด 60๋ ๋จ์ฑ์ ๋ถ์์ํจ ์ฌ๊ฑด์ด ๋ฐ์ํ์๋ค. |
| | ํ์ฅ ์กฐ์ฌ ๊ฒฐ๊ณผ, ํ๋ฌผ์ฐจ ์ด์ ์ ๊น๋ฏผ์(35)๋ ์ฌ์ ์ ๋ธ๋ ์ดํฌ ํจ๋๋ฅผ ๋ง๋ชจ์ํค๊ณ ๋ธ๋ ์ดํฌ์ก์ ๋ฌผ์ ์์ด ๊ณ ์ฅ์ ์ ๋ฐํ ๊ฒ์ผ๋ก ํ์ธ๋์๋ค. |
| | ์ฌ๊ณ ์งํ ๊น์ ์ฐจ ๋ด๋ถ์ ์จ๊ฒจ์ง ๊ธ๊ณ ์์ ํ๊ธ 200๋ง ์๊ณผ ๊ฐ์ฃฝ ๊ฐ๋ฐฉ, ์ค๋งํธํฐ์ ๊บผ๋ด ์๊ฐ ์๊ฒฝ์ ์ง์์๊ฒ ์ ๋ฌํ๊ณ , ์ํ ๊ณ์ข๋ก ์ก๊ธํ์๋ค. |
| | ๊ฒฝ์ฐฐ์ ์ฐจ๋ GPS ๊ธฐ๋ก, ๋ธ๋ ์ดํฌ ํจ๋ ๋ง๋ชจ ์ํ, CCTV ์์ ์กฐ์ ์ฌ๋ถ๋ฅผ ์กฐ์ฌ ์ค์ด๋ฉฐ, ๊น์ ๊ตํต์ฌ๊ณ ์ฒ๋ฆฌํน๋ก๋ฒ์ ๋ฐ๋ผ ์น์ ํ์๋ก ์
๊ฑด๋์๋ค. |
| | ํ์ฌ ์์ฌ๋ ๊น์ ์ํ ์ก๊ธ ๊ธฐ๋ก๊ณผ ๊ธ๊ณ ๋ด์ฉ๋ฌผ ํ๋ณด๋ฅผ ํตํด ๋ฒ์ฃ ๋๊ธฐ์ ๋ฒํ ๋ฐฉ๋ฒ์ ํ์
์ค์ด๋ค. |
| | ์ฌ๊ฑด์ ์์ง ๊ฒฐ๋ง์ด ๋ด๋ ค์ง์ง ์์์ผ๋ฉฐ, ์ถ๊ฐ ์ฆ๊ฑฐ ํ๋ณด๊ฐ ํ์ํ๋ค.""" |
| | |
| | |
| | messages = [ |
| | {"role": "system", "content": """๋น์ ์ ๋ฒํ๋ถ์ AI ๋ชจ๋ธ์
๋๋ค. ์ง๋ฌธ์ ์ ํํ๊ฒ ๋ต๋ณํ์ธ์."""}, |
| | {"role": "user", "content": question} |
| | ] |
| | |
| | inputs = tokenizer.apply_chat_template( |
| | messages, |
| | add_generation_prompt=True, |
| | return_tensors="pt", |
| | return_dict=True, |
| | ).to(model.device) |
| | |
| | model.eval() |
| | outputs = model.generate( |
| | **inputs, |
| | max_new_tokens=1024 * 2, |
| | temperature=0.1, |
| | do_sample=True, |
| | ) |
| | |
| | generated = outputs[0][inputs["input_ids"].shape[-1] :] |
| | answer = tokenizer.decode(generated, skip_special_tokens=True) |
| | print('์ฌ๊ฑด ์ฌ๊ตฌ์ฑ : ', answer) |
| | |
| | |
| | ์ฌ๊ฑด ์ฌ๊ตฌ์ฑ : 2024๋
4์ 25์ผ ์คํ 1์ 30๋ถ, ์์ธ ์ญ์ค๋์
๊ตฌ์ญ ์ธ๊ทผ์์ ๋ฐ์ํ ์ด์ฟ์ง ํ๋ฌผ์ฐจ ์ฌ๊ณ ๋ ๋จ์ํ ๊ตํต์ฌ๊ณ ๊ฐ ์๋๋ผ ์ ๊ตํ๊ฒ ๊ณํ๋ ์ ๋ ์ฌ๊ฑด์ ์ผํ์ด์๋ค. ํ๋ฌผ์ฐจ ์ด์ ์์ธ ๊น๋ฏผ์(35)๋ 3๊ฐ์ ์ ๋ถํฐ ์ง์ญ ์๊ฐ์์ ์ผํ๋ 60๋ ๋จ์ฑ(ํผํด์)๊ณผ์ ๊ธ์ ์ ๊ฐ๋ฑ์ ํ๊ณ ์์๋ค. ๊น์ ํผํด์๊ฐ ์์ ์ด ์ด์ํ๋ ์์ ๊ฐ๊ฒ์์ ๋ฌผ๊ฑด์ ํ์ณ ๊ฐ๋ ๊ฒ์ ๋ชฉ๊ฒฉํ๊ณ , ๊ทธ ์ฌ์ค์ ํญ๋กํ๋ฉด ์์ ์ ์ฌ์
์ด ๋ง๊ฐ์ง ์ํ์ด ์๋ค๊ณ ํ๋จํ๋ค. ์ด์ ๊น์ ํผํด์๋ฅผ ์ ๊ฑฐํ๊ณ ๋์์ ๊ฐ๊ฒ์์ ํ์น ๋ฌผ๊ฑด์ ํ์ํ๋ ค๋ ๊ณํ์ ์ธ์ ๋ค. |
| | |
| | ๊ณํ ๋จ๊ณ์์ ๊น์ ํ๋ฌผ์ฐจ์ ๋ธ๋ ์ดํฌ ํจ๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ชจ์ํค๊ณ , ๋ธ๋ ์ดํฌ์ก์ ๋ฌผ์ ์์ด ๋ธ๋ ์ดํฌ๊ฐ ๊ฐ์๊ธฐ ์๋ํ์ง ์๋๋ก ์กฐ์ํ๋ค. ๋ํ, ์ฐจ ๋ด๋ถ์ ์จ๊ฒจ์ง ์์ ๊ธ๊ณ ์ ํ์น ๋ฌผ๊ฑด(ํ๊ธ 200๋ง ์, ๊ฐ์ฃฝ ๊ฐ๋ฐฉ, ์ค๋งํธํฐ)์ ๋ณด๊ดํ๋ค. ์ฌ๊ณ ๋ฐ์ ์ ํผํด์๊ฐ ์ฐจ์ ๋ถ๋ชํ ๋ถ์์ ์
์ผ๋ฉด, ๊น์ ์ฆ์ ์ฐจ๋ฅผ ๋ฉ์ถ๊ณ ๊ธ๊ณ ๋ฅผ ์ด์ด ๋ฌผ๊ฑด์ ๊บผ๋ด์ด ์๊ฐ ์๊ฒฝ์ ์ง์์๊ฒ ์ ๋ฌํ๋ค. ์ด ์ง์์ ๊น์ด ์ฌ์ ์ ํ์ํ ์ธ๋ฌผ๋ก, ๋ฌผ๊ฑด์ ์๊ฑฐํด ๊น์ ์ํ ๊ณ์ข๋ก ์ก๊ธํ๋๋ก ํ๋ค. |
| | |
| | ์คํ ๋จ๊ณ์์ ๊น์ ํ๋ฌผ์ฐจ๋ฅผ ์ญ์ค๋์
๊ตฌ์ญ ์ธ๊ทผ ์ธ๋์ ์ฃผ์ฐจํ ๋ค, ํผํด์๊ฐ ์ฐจ๋ฅผ ์ง๋๊ฐ๋ ์๊ฐ ๋ธ๋ ์ดํฌ๋ฅผ ๊ณ ์๋ก ์๋์ํค์ง ์๋๋ก ์กฐ์ํ๋ค. ์ฐจ๊ฐ ์ธ๋๋ฅผ ๋์งํ๋ฉด์ ํผํด์๋ ์ฐจ์ฒด์ ๋ถ๋ชํ ๋ค๋ฆฌ๋ฅผ ํฌ๊ฒ ๋ค์ณค๊ณ , ์ฆ์ ๋ณ์์ผ๋ก ์ด์ก๋์๋ค. ๊น์ ์ฌ๊ณ ์งํ ์ฐจ๋ฅผ ๋ฉ์ถ๊ณ , ํผํด์๊ฐ ๋ถ์์ผ๋ก ์์ง์ผ ์ ์๋ค๋ ์ํฉ์ ์ด์ฉํด ๊ธ๊ณ ๋ฅผ ์ด์ด ๋ฌผ๊ฑด์ ๊บผ๋๋ค. ๊ทธ๋ ๋ฌผ๊ฑด์ ์๊ฐ ์๊ฒฝ์ ์ง์์๊ฒ ์ ๋ฌํ๊ณ , ์ง์์ ์ฆ์ ํ๊ธ๊ณผ ๋ฌผ๊ฑด์ ๊น์ ์ํ ๊ณ์ข๋ก ์ก๊ธํ๋ค. |
| | |
| | ์ํ ๋จ๊ณ์์๋ ๊น์ ์ฌ๊ณ ํ์ฅ์ ๋น ๋ฅด๊ฒ ์ ๋ฆฌํ๊ณ , ์ฐจ ๋ด๋ถ์ ๋จ์ ํ์ ์ ์ต์ํํ๋ค. ๊ทธ๋ ์ฐจ๋ฅผ ๋ค๋ฅธ ์ง์ญ์ผ๋ก ์ด๋์์ผ CCTV๊ฐ ๊ฐ์๋์ง ์๋ ๊ณณ์ ์ฃผ์ฐจํ๋ค. ๋ํ, ์ฌ๊ณ ๋น์ ์ฐจ๊ฐ ์ ์งํ ์์น์ ํผํด์์ ๋ถ์ ์ ๋๋ฅผ ์ด์ฉํด ๊ฒฝ์ฐฐ์ด ์ฌ๊ณ ๋ฅผ ๋จ์ํ ๊ตํต์ฌ๊ณ ๋ก ํ๋จํ๋๋ก ์ ๋ํ๋ค. ๊น์ ์ดํ ์ํ ๊ณ์ข์์ ๋ฌผ๊ฑด์ ํ๊ธ์ผ๋ก ์ธ์ถํด ํ์ง ํธ์์ ์์ ํ๊ธํํ๊ณ , ๋จ์ ๊ธ์ก์ ๊ฐ์ง ์ ๋ถ์ฆ์ผ๋ก ๋ง๋ ๊ฐ์ ๊ณ์ข์ ์ก๊ธํ๋ค. |
| | |
| | ์์ฌ ๊ณผ์ ์์ ๊ฒฝ์ฐฐ์ CCTV ์์์ ๋ถ์ํด ํ๋ฌผ์ฐจ๊ฐ ์ธ๋๋ฅผ ๋์งํ ์๊ฐ์ ํ์ธํ๊ณ , ๋ธ๋ ์ดํฌ ํจ๋ ๋ง๋ชจ์ ๋ธ๋ ์ดํฌ์ก์ ๋ฌผ์ด ์์ธ ํ์ ์ ๋ฐ๊ฒฌํ๋ค. ๋ํ, ๊น์ด ์ฌ์ ์ ์๊ฐ ์๊ฒฝ์ ์ง์๊ณผ ์ฐ๋ฝ์ ์ฃผ๊ณ ๋ฐ์๋ค๋ ์ฆ๊ฑฐ๊ฐ ํ๋ณด๋์๋ค. ๊ทธ๋ฌ๋ ๊น์ ๊ตํต์ฌ๊ณ ์ฒ๋ฆฌํน๋ก๋ฒ์ ๋ฐ๋ผ ์น์ ํ์๋ก ์
๊ฑด๋์์ผ๋ฉฐ, ํ์ฌ๋ ๊ตฌ์์์ฅ์ด ์ ์ฒญ ์ค์ด๋ค. ์ฌ๊ฑด์ ์์ง ์์ฌ ๋จ๊ณ์ด๋ฉฐ, ๊น์ด ์ค์ ๋ก ๋ฌผ๊ฑด์ ํ์ณค๋์ง, ๊ทธ๋ฆฌ๊ณ ํผํด์์์ ๊ฐ๋ฑ์ด ๋ฒํ ๋๊ธฐ์ ์ผ๋ง๋ ์ํฅ์ ๋ฏธ์ณค๋์ง์ ๋ํ ์ถ๊ฐ ์กฐ์ฌ๊ฐ ํ์ํ๋ค. ์ฌ๊ฑด์ ์์ง ๊ฒฐ๋ง์ด ๋ด๋ ค์ง์ง ์์์ผ๋ฉฐ, ๊ฒฝ์ฐฐ์ ๊น์ ์ํ ๊ณ์ข์ ์๊ฐ ์๊ฒฝ์ ์ง์์ ์ฆ์ธ์ ํตํด ๋ฒํ์ ์ ๋ชจ๋ฅผ ํ์
ํ๋ ค ํ๊ณ ์๋ค. |
| | ์ฌ๊ฑด ์ ํ : ์ ๋ |
| | ``` |
| |
|
| |
|
| | ## Training Details |
| |
|
| | ``` |
| | base_model = "./gemma-3-1b-it" |
| | tokenizer = AutoTokenizer.from_pretrained(base_model) |
| | |
| | bnb_config = BitsAndBytesConfig( |
| | load_in_4bit=True, |
| | bnb_4bit_compute_dtype=torch.bfloat16, |
| | bnb_4bit_use_double_quant=True, |
| | bnb_4bit_quant_type="nf4" |
| | ) |
| | |
| | model = AutoModelForCausalLM.from_pretrained( |
| | base_model, |
| | quantization_config=bnb_config, |
| | torch_dtype=torch.bfloat16, |
| | device_map="auto" |
| | ) |
| | |
| | lora_config = LoraConfig( |
| | r=16, |
| | lora_alpha=32, |
| | target_modules=[ |
| | "q_proj", "k_proj", "v_proj", "o_proj", |
| | "gate_proj", "up_proj", "down_proj" |
| | ], |
| | lora_dropout=0.05, |
| | bias="none", |
| | task_type=TaskType.CAUSAL_LM, |
| | ) |
| | |
| | model2 = get_peft_model(model, lora_config) |
| | ``` |
| |
|
| |
|
| | #### Preprocessing [optional] |
| |
|
| | ``` |
| | def format_prompt(ex, max_length=1775): |
| | global max_length_cal, row |
| | |
| | |
| | title = '๋ค์ ์ฌ๊ฑด ๋ณด๊ณ ์๋ฅผ ํตํด์ ๋น์ ์ฌ๊ฑด์ ์ฌ๊ตฌ์ฑํด์ฃผ๊ณ , ์ฌ๊ฑด ์ ํ์ ๋ถ๋ฅํด์ค\n' |
| | question = ex["report"] |
| | answer = ex["context"] |
| | kind = f'\n์ฌ๊ฑด ์ ํ : {ex["kind"]}' |
| | |
| | prompt = f"""<start_of_turn>system |
| | ๋น์ ์ ๋ฒํ๋ถ์ AI ๋ชจ๋ธ์
๋๋ค. |
| | ์ง๋ฌธ์ ์ ํํ๊ฒ ๋ต๋ณํ์ธ์. |
| | <end_of_turn> |
| | <start_of_turn>user |
| | {title} |
| | |
| | [์ฌ๊ฑด ๋ณด๊ณ ์] |
| | {question}\n<end_of_turn>\n<start_of_turn>model\n""" |
| | |
| | prompt_ids = tokenizer(prompt, add_special_tokens=False)["input_ids"] |
| | |
| | model_part = f"""{answer} {kind}<end_of_turn>""" |
| | answer_ids = tokenizer(model_part, add_special_tokens=False)["input_ids"] |
| | |
| | input_ids = prompt_ids + answer_ids |
| | labels = [-100] * len(prompt_ids) + answer_ids |
| | attention_mask = [1] * len(input_ids) |
| | |
| | pad_len = max_length - len(input_ids) |
| | input_ids += [tokenizer.pad_token_id] * pad_len |
| | attention_mask += [0] * pad_len |
| | labels += [-100] * pad_len |
| | |
| | return { |
| | "input_ids": input_ids, |
| | "attention_mask": attention_mask, |
| | "labels": labels, |
| | } |
| | ``` |
| |
|
| |
|
| | #### Training Hyperparameters |
| |
|
| | ``` |
| | training_args = TrainingArguments( |
| | output_dir=model_path, |
| | per_device_train_batch_size=16, |
| | gradient_accumulation_steps=2, |
| | num_train_epochs=4, |
| | learning_rate=2e-4, |
| | bf16=True, |
| | fp16=False, |
| | gradient_checkpointing = False, |
| | logging_steps=5, |
| | eval_steps=300, |
| | save_strategy="steps", |
| | save_steps=300, |
| | save_total_limit=2, |
| | report_to="none", |
| | lr_scheduler_type="cosine", |
| | warmup_ratio=0.05, |
| | optim="adamw_torch" |
| | ) |
| | ``` |
| |
|
| | #### Speeds, Sizes, Times [optional] |
| |
|
| | ``` |
| | [4844/4844 5:28:09, Epoch 4/4] |
| | Step Training Loss |
| | 10 2.668900 |
| | 20 2.386700 |
| | 30 2.226000 |
| | 40 2.026500 |
| | 50 1.896800 |
| | 60 1.778100 |
| | 70 1.733700 |
| | 80 1.678000 |
| | 90 1.622100 |
| | 100 1.583400 |
| | 200 1.399400 |
| | 300 1.343400 |
| | 400 1.290700 |
| | 500 1.286000 |
| | 600 1.229200 |
| | 700 1.226100 |
| | 800 1.216800 |
| | 900 1.204500 |
| | 1000 1.158700 |
| | 1100 1.153700 |
| | 1200 1.157400 |
| | 1300 1.106100 |
| | 1400 1.114300 |
| | 1500 1.091600 |
| | 1600 1.087400 |
| | 1700 1.087200 |
| | 1800 1.093100 |
| | 1900 1.082200 |
| | 2000 1.084200 |
| | 2100 1.090000 |
| | 2200 1.084300 |
| | 2300 1.058100 |
| | 2400 1.062100 |
| | 2500 1.021800 |
| | 2600 1.028800 |
| | 2700 1.034700 |
| | 2800 1.040300 |
| | 2900 1.033000 |
| | 3000 1.016200 |
| | 3100 1.015800 |
| | 3200 0.983400 |
| | 3300 1.010900 |
| | 3400 1.015900 |
| | 3500 1.028600 |
| | 3600 1.019400 |
| | 3700 0.971100 |
| | 3800 0.947100 |
| | 3900 0.984500 |
| | 4000 0.965500 |
| | 4100 0.973800 |
| | 4200 0.968100 |
| | 4300 0.969000 |
| | 4400 0.953500 |
| | 4500 0.988400 |
| | 4505 0.942400 |
| | 4510 0.931300 |
| | 4515 0.973200 |
| | 4520 0.989900 |
| | 4525 0.979900 |
| | 4530 0.963000 |
| | 4535 0.981700 |
| | 4540 0.953700 |
| | 4545 0.963700 |
| | 4550 0.961500 |
| | 4555 0.972000 |
| | 4560 0.958600 |
| | 4565 0.970500 |
| | 4570 0.987800 |
| | 4575 0.974500 |
| | 4580 0.968700 |
| | 4585 0.982000 |
| | 4590 0.961300 |
| | 4595 0.968400 |
| | 4600 0.966000 |
| | 4700 0.998300 |
| | 4800 0.966200 |
| | 4805 0.973900 |
| | 4810 0.975200 |
| | 4815 0.974400 |
| | 4820 0.973400 |
| | 4825 0.972000 |
| | 4830 0.960200 |
| | 4835 0.961700 |
| | 4840 0.974000 |
| | |
| | |
| | Evaluation Result : |
| | {'eval_loss': 1.062408447265625, 'eval_runtime': 15.7428, 'eval_samples_per_second': 24.9, 'eval_steps_per_second': 3.113, 'epoch': 4.0} |
| | |
| | |
| | Best checkpoint : |
| | 4510 0.931300 |
| | ``` |
| |
|
| |
|
| | ## Model Card Authors [optional] |
| | ``` |
| | (์ฃผ)์ธ์ ๋ณด |
| | ํํ์ด์ง : http://www.ijbinfo.com |
| | |
| | ์ ๋ณดํต์ ์ฐ์
์งํฅ์์ ์ง์์ ๋ฐ์์ ์งํํ์ต๋๋ค. |
| | ``` |
| |
|
| | ## Model Card Contact |
| | ``` |
| | (์ฃผ)์ธ์ ๋ณด |
| | ์ฃผ์ : ์์ธ์ ๊ธ์ฒ๊ตฌ ๊ฐ์ฐ๋ 60-5 ๊ฐ์ฌ๊ทธ๋ ์ดํธ๋ฐธ๋ฆฌA๋ 805ํธ |
| | ์ฐ๋ฝ์ฒ : TEL : 02-3397-7765 FAX : 02-3397-7769 E-mail : sales@injungbo.co.kr |
| | ๋ด๋น์ : ์ฅํ์(chyungwon@ijbinfo.com) |
| | ``` |