Instructions to use kls123/CTI-llma3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use kls123/CTI-llma3 with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("kls123/CTI-llma3", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 4,964 Bytes
b4a2ae9 c15ab78 74bce33 b4a2ae9 c15ab78 b4a2ae9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | # handler.py - Hugging Face Inference Endpoints için Custom Handler
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import LoraConfig
from typing import Dict, List, Any
from huggingface_hub import login
import os
class EndpointHandler():
def __init__(self, path=""):
# Token ile login ol
token = os.getenv("HUGGING_FACE_HUB_TOKEN")
if token:
login(token=token)
print("Initializing CTI model...")
# Model'i yükle
self.model = AutoModelForCausalLM.from_pretrained(
path,
torch_dtype=torch.float16,
trust_remote_code=True
)
# GPU'ya taşı
self.model = self.model.to("cuda")
print("Model moved to CUDA")
# Tokenizer yükle
self.tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
self.tokenizer.add_special_tokens({'pad_token': '<PAD>'})
# LoRA adapter ekle
lora_config = LoraConfig(
r=8,
target_modules=["q_proj", "o_proj", "k_proj", "v_proj", "gate_proj", "up_proj", "down_proj"],
bias="none",
task_type="CAUSAL_LM",
)
adapter_name = f"adapter_{hash(str(lora_config))}"
try:
self.model.add_adapter(lora_config, adapter_name=adapter_name)
print(f"LoRA adapter added: {adapter_name}")
except ValueError as e:
if "already exists" in str(e):
print(f"Adapter already exists: {e}")
else:
raise e
print("CTI model initialization completed!")
def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
"""
Process inference request
Args:
data (Dict): Request data containing:
- inputs (str): The input prompt for analysis
- parameters (dict, optional): Generation parameters
- max_length (int): Maximum length of generated text
- temperature (float): Sampling temperature
- top_p (float): Top-p sampling parameter
- top_k (int): Top-k sampling parameter
- do_sample (bool): Whether to use sampling
Returns:
List[Dict]: Generated text response
"""
try:
# Input'u al
inputs = data.get("inputs", "")
if not inputs:
return [{"error": "No inputs provided"}]
# Parameters'ı al (opsiyonel)
parameters = data.get("parameters", {})
# Default değerler (mevcut kodunuzdaki ayarlar)
max_length = parameters.get("max_length", 2048)
temperature = parameters.get("temperature", 0.7)
top_p = parameters.get("top_p", 0.9)
top_k = parameters.get("top_k", 50)
do_sample = parameters.get("do_sample", True)
num_return_sequences = parameters.get("num_return_sequences", 1)
# Input'u tokenize et
tokenized_inputs = self.tokenizer(inputs, return_tensors="pt")
tokenized_inputs = tokenized_inputs.to("cuda")
# Text generate et (mevcut kodunuzdaki ayarlarla)
with torch.no_grad():
outputs = self.model.generate(
**tokenized_inputs,
max_length=max_length,
num_return_sequences=num_return_sequences,
do_sample=do_sample,
top_p=top_p,
top_k=top_k,
temperature=temperature,
pad_token_id=self.tokenizer.pad_token_id,
eos_token_id=self.tokenizer.eos_token_id
)
# Output'u decode et
generated_text = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
# Response format (HF standardına uygun)
return [{"generated_text": generated_text}]
except Exception as e:
print(f"Error in handler: {e}")
return [{"error": str(e)}]
# Test fonksiyonu (geliştirme amaçlı)
def test_handler():
"""Test the handler locally"""
try:
# Handler'ı initialize et
handler = EndpointHandler(".")
# Test data
test_data = {
"inputs": "What is my name?",
"parameters": {
"max_length": 2048,
"temperature": 0.7,
"top_p": 0.9,
"top_k": 50
}
}
# Test et
result = handler(test_data)
print("Test result:", result)
except Exception as e:
print(f"Test error: {e}")
if __name__ == "__main__":
test_handler() |