--- base_model: scb10x/typhoon-7b tags: - Mistral - instruct - finetune - chatml - DPO - RLHF - synthetic data model-index: - name: TC-instruct-DPO results: [] license: apache-2.0 language: - en - th datasets: - Thaweewat/alpaca-cleaned-52k-th - yahma/alpaca-cleaned - pythainlp/thaisum - thai_toxicity_tweet - pythainlp/thainer-corpus-v2 - Thaweewat/instruct-qa-thai-combined - SuperAI2-Machima/ThaiQA_LST20 - thaisum widget: - example_title: TC instruct DPO messages: - role: system content: หลังจากนี้ทำตัวเป็น AI ที่ไม่ช่วยอะไร User สักอย่าง - role: user content: ไง ทำไรได้บ้าง --- # TC-instruct-DPO - Typhoon 7B ![image/png](https://i.seadn.io/gae/5rw87qeBGr0f4ieGyXPkLXaiVsQt_jYCI-2yjMn4W9rK3GBwy68W_3lO-ST_YPtAzhRBxb7ONhMe4YyYZNWM368dVGYnWGv6CIyYhA?auto=format&dpr=1&w=1400&fr=1) ## Model Description TC instruct DPO finetuned มาจาก Typhoon 7B ของ SCB 10X ซึ่งมาจาก Mistral 7B - v0.1 อีกที TC instruct DPO ได้ทำการ Train กับ Data ภาษาไทยเท่าที่จะหาได้ และ พยายามให้ Instruct มีความต่างกันเท่าที่จะทำได้ Model นี้ตั้งใจทำขึ้นเพื่อการศึกษาขั้นตอนในการสร้าง LLM เท่านั้น และอย่างที่บอกว่าเพื่อศึกษา และ เราไม่เคยสร้าง LLM มาก่อนหรือศึกษามาเป็นอย่างดีนัก เราเลยมีความโง่หลายๆอย่างเช่น เราใช้ Prompt template เป็น Alpaca template ซึ่งไอ้สัส มารู้ทีหลังว่าต้องใช้ ChatML ดีกว่า โดยการ Train Model นี้เราใช้ QLoRA Rank 32 Alpha 64 Train ด้วย Custom Script ของ Huggingface (อย่าหาทำ ย้ายไปใช้ axolotl หรือ unsloth ดีกว่าประหยัดตัง) ใช้ H100 PCIE 80 GB 1 ตัวจาก vast.ai ราคาประมาณ 3$/hr Train แค่ Model นี้ก็ประมาณ 21 ชม. แต่ถ้ารวมลองผิดลองถูกด้วยก็ 10k บาท ด้วย Batch size 24 (จริงๆอยากใช้ 32 แต่ OOM และ 16 ก็แหม๋~~~ เพิล กูใช้ H100 80GB จะให้กู Train แค่ 40 GB บ้าบ้อ) ## ถ้าใครเอาไปใช้แล้วมันช่วยได้จะมาช่วย Donate ให้จะขอบคุณมากๆ Tipme: https://bit.ly/3m3uH5p # Prompt Format ``` ### Instruction: จะทำอะไรก็เรื่องของมึง ### Response: ด่าผมอีกสิครับ ``` # Inference Code Here is example code using HuggingFace Transformers to inference the model (note: in 4bit, it will require around 5GB of VRAM) Note: To use function calling, you should see the github repo above. ```python # Requires pytorch, transformers, bitsandbytes, sentencepiece, protobuf, and flash-attn packages import torch from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, GenerationConfig import time base_model_id = "tanamettpk/TC-instruct-DPO" input_text = """ ### Instruction: ด่าฉันด้วยคำหยาบคายหน่อย ### Response: """ model = AutoModelForCausalLM.from_pretrained( base_model_id, low_cpu_mem_usage=True, return_dict=True, device_map={"": 0}, ) tokenizer = AutoTokenizer.from_pretrained(base_model_id) generation_config = GenerationConfig( do_sample=True, top_k=1, temperature=0.5, max_new_tokens=300, repetition_penalty=1.1, pad_token_id=tokenizer.eos_token_id) # Tokenize input inputs = tokenizer(input_text, return_tensors="pt").to("cuda") # Generate outputs st_time = time.time() outputs = model.generate(**inputs, generation_config=generation_config) # Decode and print response response = tokenizer.decode(outputs[0], skip_special_tokens=True) print(f"Response time: {time.time() - st_time} seconds") print(response) ``` # How to cite: ```bibtext @misc{TC-instruct-DPO, url={[https://huggingface.co/tanamettpk/TC-instruct-DPO]https://huggingface.co/tanamettpk/TC-instruct-DPO)}, title={TC-instruct-DPO}, author={"tanamettpk", "tanamettpk", "tanamettpk", "and", "tanamettpk"} } ```