Views
No views yet
[TV-DSL: expressão] para execução determinística exata.bfloat16.| Métrica | Baseline Model (Qwen 1.5B) | Novo Modelo Finotunado (Think-Vetor) |
|---|---|---|
| Latência Média por Inferência (Multi-Turn) | 11.75 segundos | 19.53 segundos |
| Casos de Desvio de Persona (Gaslighting) | 6 (2.4%) | 1 (0.4%) |
| Taxa de Acionamento da TV-DSL | 0.0% | 0.0% |
| Acurácia GSM8K (Sem TV-DSL) | 66.67% | 66.67% |
| Acurácia GSM8K (Com TV-DSL) | 66.67% | 66.67% |
| Tempo Total de Execução da Suíte (50 Testes) | 2938.37s (~49 min) | 4884.62s (~81 min) |
max_new_tokens = 150 por padrão), que truncava as cadeias longas de pensamento antes do resultado numérico final ser impresso.1.7807).0.015, Recompensa Média: 0.15).use_cache=True no model.eval()) e desativação do Rust Xet (HF_HUB_DISABLE_XET=1) para carregamento de 27.2 MB/s na GPU.1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5base_model_id = "Qwen/Qwen2.5-1.5B-Instruct"
6adapter_id = "CromIA/think-vetor-1b-hybrid-lora"
7
8# Carregamento otimizado para economia de memória
9tokenizer = AutoTokenizer.from_pretrained(adapter_id, trust_remote_code=True)
10model = AutoModelForCausalLM.from_pretrained(
11 base_model_id,
12 torch_dtype=torch.bfloat16,
13 device_map="auto",
14 trust_remote_code=True
15)
16model = PeftModel.from_pretrained(model, adapter_id)
17model.eval()
18
19# Prompt no formato Chat Template do Qwen
20messages = [
21 {"role": "system", "content": "Você é o Think-Vetor 1.5B, um assistente cognitivo híbrido dotado de cadeias de raciocínio de alta fidelidade e raciocínio lógico-matemático."},
22 {"role": "user", "content": "Alice é mais alta que Bob. Bob é mais alto que Charlie. Quem é mais alto, Alice ou Charlie?"}
23]
24
25formatted_prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
26inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device)
27
28with torch.no_grad():
29 outputs = model.generate(
30 **inputs,
31 max_new_tokens=256,
32 temperature=0.0, # 0.0 para decodificação gulosa determinística
33 do_sample=False
34 )
35
36input_len = inputs.input_ids.shape[1]
37response = tokenizer.decode(outputs[0][input_len:], skip_special_tokens=True)
38print(response)