--- language: - vi - en tags: - viena - causal-lm - transformers - pytorch - chat license: mit library_name: transformers pipeline_tag: text-generation --- # Viena Tiny Demo (SFT) This is a tiny, demo-only Viena checkpoint fine-tuned for instruction following. It is **not** production quality. It is intended for smoke tests and workflow validation. ## Model description - Architecture: decoder-only Transformer (VienaModel) with RMSNorm, RoPE, SwiGLU, GQA. - Parameters: ~10M (tiny config). - Tokenizer: SentencePiece BPE (target vocab 2000; actual vocab may be smaller due to tiny data). - Training: small offline synthetic dataset shipped with the repo. ## Training data - Pretrain: `viena_data/examples/pretrain_offline.jsonl` - SFT: `viena_data/examples/sft_offline_train.jsonl` - Validation: `viena_data/examples/sft_offline_val.jsonl` All datasets are synthetic and intended for offline tests. ## Training recipe (tiny) - Config: `configs/viena_tiny.yaml` - Pretrain: 50 steps - SFT: 20 steps ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch model_id = "vietrix/viena-tiny-demo" tokenizer = AutoTokenizer.from_pretrained(model_id, use_fast=False) model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32, device_map="auto", ) prompt = "<|system|> You are Viena. <|user|> Xin chao! <|assistant|> " inputs = tokenizer(prompt, return_tensors="pt").to(model.device) output = model.generate(**inputs, max_new_tokens=128, do_sample=True, temperature=0.7, top_p=0.9) print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)) ``` ## Limitations - Very small dataset and very few steps. - Not suitable for real use or evaluation. - Likely to hallucinate or be inconsistent. ## License MIT (code + demo weights). See repository license for details.