
<!-- This model card has been generated automatically according to the information the Trainer had access to. You
should probably proofread and complete it, then remove this comment. -->

# typhoon-7b-chat-alpaca

This model is a fine-tuned version of [TheBloke/typhoon-7B-GPTQ](https://huggingface.co/TheBloke/typhoon-7B-GPTQ) on the [Pobpad](https://huggingface.co/datasets/Thaweewat/pobpad) dataset.

> **_Experimental:_**  This experimental model is not suitable for real medical use.
> It can hallucinate and generate dangerous answers. Further medical evaluation is needed.

## Usage

```python
from peft import AutoPeftModelForCausalLM
from transformers import GenerationConfig, AutoTokenizer
import torch
import time


def generate_response(input_text: str) -> str:
    """
    Generate a response for the given input text using the Typhoon-7B model.

    Parameters:
    input_text (str): The input text prompt.

    Returns:
    str: The generated response.
    """
    # Initialize the tokenizer and model only once
    tokenizer = AutoTokenizer.from_pretrained("Thaweewat/typhoon-7b-chat-pobpad")

    model = AutoPeftModelForCausalLM.from_pretrained(
        "Thaweewat/typhoon-7b-chat-pobpad",
        low_cpu_mem_usage=True,
        return_dict=True,
        torch_dtype=torch.float16,
        device_map="cuda")

    generation_config = GenerationConfig(
        do_sample=True,
        top_k=1,
        temperature=0.4, # After a few experiment I found that between 0.3-0.4 seem to generate well
        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")
    return response

# Sample usage:
# Example from https://pantip.com/topic/42422619
input_text = """###Human: สวัสดีค่า มาตามหาอาหารเสริม คุณเเม่อายุ50+ค่ะ
ทำงานเดินทั้งวันเเถมพักผ่อนน้อยมีบางช่วงที่ดูไม่ค่อยสดใส อยากให้ทุกคนช่วยเเนะนำอาหารเสริมหน่อยค่า
###Assistant: """
print(generate_response(input_text))

"""
อาหารเสริมสำหรับผู้สูงอายุ ควรเลือกทานที่มีวิตามินและแร่ธาตุครบถ้วน เช่น วิตามินบีรวม วิตามินซี แคลเซียม
 แมกนีเซียม เหล็ก โฟเลต เป็นต้น ซึ่งจะช่วยให้ร่างกายแข็งแรงขึ้น และควรหลีกเลี่ยงการรับประทานอาหารประเภทไขมันสูง
 เพราะอาจทำให้เกิดโรคหัวใจได้หากต้องการทราบข้อมูลเพิ่มเติม สามารถสอบถามเภสัชกรหรือแพทย์ประจำตัวเพื่อขอคำแนะนำในการดูแลสุขภาพก่อนนะคะ
 ขอเป็นกำลังใจให้นะคะ หากมีข้อสงสัยสามารถปรึกษาพยาบาลสายด่วน โทร.1669 ได้ตลอดเวลาค่ะ
*หมายเหตุ : การใช้ยาและการปรับเปลี่ยนพฤติกรรมต่างๆ ควรอยู่ภายใต้การดูแลของบุคลากรทางการแพทย์*
"""
```

### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 0.0002
- train_batch_size: 32
- eval_batch_size: 8
- seed: 42
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: cosine
- mixed_precision_training: Native AMP

### Framework versions

- PEFT 0.7.1
- Transformers 4.37.0.dev0
- Pytorch 2.1.2+cu121
- Datasets 2.16.0
- Tokenizers 0.15.0
{"language": ["th"], "license": "apache-2.0", "library_name": "peft", "tags": ["trl", "sft", "generated_from_trainer"], "datasets": ["Thaweewat/pobpad"], "base_model": "TheBloke/typhoon-7B-GPTQ", "model_creator": "SCB 10X", "model_type": "mistral", "model-index": [{"name": "typhoon-7b-chat-alpaca", "results": []}]}
peft safetensors trl sft generated_from_trainer th dataset:Thaweewat/pobpad base_model:TheBloke/typhoon-7B-GPTQ license:apache-2.0 region:us