Thaweewat's picture
Update README.md
87ad30e
metadata
license: apache-2.0
library_name: peft
tags:
  - trl
  - sft
  - generated_from_trainer
base_model: TheBloke/typhoon-7B-GPTQ
model_creator: SCB 10X
model_name: Typhoon 7B
model_type: mistral
model-index:
  - name: typhoon-7b-chat-alpaca
    results: []
datasets:
  - Thaweewat/pobpad
language:
  - th

typhoon-7b-chat-alpaca

This model is a fine-tuned version of TheBloke/typhoon-7B-GPTQ on the 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

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