Instructions to use IAMPOOM/CircleZone-1.0-33M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use IAMPOOM/CircleZone-1.0-33M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="IAMPOOM/CircleZone-1.0-33M") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("IAMPOOM/CircleZone-1.0-33M") model = AutoModelForCausalLM.from_pretrained("IAMPOOM/CircleZone-1.0-33M", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use IAMPOOM/CircleZone-1.0-33M with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf IAMPOOM/CircleZone-1.0-33M:F16 # Run inference directly in the terminal: llama cli -hf IAMPOOM/CircleZone-1.0-33M:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf IAMPOOM/CircleZone-1.0-33M:F16 # Run inference directly in the terminal: llama cli -hf IAMPOOM/CircleZone-1.0-33M:F16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf IAMPOOM/CircleZone-1.0-33M:F16 # Run inference directly in the terminal: ./llama-cli -hf IAMPOOM/CircleZone-1.0-33M:F16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf IAMPOOM/CircleZone-1.0-33M:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf IAMPOOM/CircleZone-1.0-33M:F16
Use Docker
docker model run hf.co/IAMPOOM/CircleZone-1.0-33M:F16
- LM Studio
- Jan
- vLLM
How to use IAMPOOM/CircleZone-1.0-33M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "IAMPOOM/CircleZone-1.0-33M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IAMPOOM/CircleZone-1.0-33M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/IAMPOOM/CircleZone-1.0-33M:F16
- SGLang
How to use IAMPOOM/CircleZone-1.0-33M with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "IAMPOOM/CircleZone-1.0-33M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IAMPOOM/CircleZone-1.0-33M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "IAMPOOM/CircleZone-1.0-33M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IAMPOOM/CircleZone-1.0-33M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use IAMPOOM/CircleZone-1.0-33M with Ollama:
ollama run hf.co/IAMPOOM/CircleZone-1.0-33M:F16
- Unsloth Desktop
- Docker Model Runner
How to use IAMPOOM/CircleZone-1.0-33M with Docker Model Runner:
docker model run hf.co/IAMPOOM/CircleZone-1.0-33M:F16
- Lemonade
How to use IAMPOOM/CircleZone-1.0-33M with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull IAMPOOM/CircleZone-1.0-33M:F16
Run and chat with the model
lemonade run user.CircleZone-1.0-33M-F16
List all available models
lemonade list
- Atomic Chat
CircleZone 1.0 33M
โมเดลภาษาขนาด 33.7 ล้านพารามิเตอร์ ที่ออกแบบและเทรนขึ้นเองตั้งแต่ศูนย์บนการ์ดจอโน้ตบุ๊กใบเดียว
A 33.7M-parameter language model designed and trained from scratch on a single laptop GPU.
ภาษาไทย
นี่คืออะไร
CircleZone 1.0 33M คือโมเดลภาษาขนาดเล็ก (Small Language Model) สำหรับแชทภาษาอังกฤษแบบเป็นกันเอง เขียนโค้ดสถาปัตยกรรมเองและเทรนจากค่าสุ่มตั้งแต่ศูนย์บน NVIDIA RTX 4060 Laptop (8 GB) ไม่ได้นำโมเดลของผู้อื่นมาปรับแต่งต่อ
เป้าหมายของโปรเจกต์คือดูว่าโมเดลที่เล็กพอจะเทรนบนคอมพิวเตอร์ส่วนตัวได้ จะเรียนรู้ภาษาได้มากแค่ไหน ผลคือโมเดลเรียงประโยคภาษาอังกฤษได้ถูกไวยากรณ์ และตอบโต้ได้ถูกจังหวะแบบคนคุยกัน แต่ไม่มีความรู้ที่เชื่อถือได้เกี่ยวกับโลกจริง
ทำงานยังไง
โมเดลมีหน้าที่เดียวคือ ทายคำถัดไป ข้อความถูกหั่นเป็นชิ้นเล็กๆ เรียกว่า token แล้วโมเดลคำนวณว่า token ถัดไปน่าจะเป็นอะไร สุ่มเลือกหนึ่งตัว ต่อท้าย แล้วทำซ้ำไปเรื่อยๆ จนได้ประโยค
ความสามารถในการคุยไม่ได้ถูกเขียนเป็นกฎไว้ แต่เกิดจากการเห็นบทสนทนาหลายแสนบทระหว่างเทรน จนจับรูปแบบได้ว่าเมื่อมีคนทัก ควรตอบกลับแบบไหน
สถาปัตยกรรม
เป็น Transformer แบบ decoder-only ตระกูลเดียวกับ GPT, Llama และ Qwen โดยโครงสร้างตรงกับ Qwen3 ทุกส่วน จึงใช้กับ LM Studio, llama.cpp, Ollama และ transformers ได้ทันที
- Attention แบบ GQA — ให้แต่ละคำมองย้อนไปหาคำก่อนหน้าที่เกี่ยวข้อง 8 หัวฝั่งถาม แชร์หน่วยความจำ 4 ชุด ประหยัดหน่วยความจำครึ่งหนึ่ง
- RoPE — ระบุตำแหน่งของคำด้วยการหมุนเวกเตอร์ ทำให้รู้ระยะห่างระหว่างคำ
- QK-Norm — ปรับขนาดก่อนคำนวณ attention ช่วยให้เทรนนิ่ง
- SwiGLU — ชั้นประมวลผลที่เก็บความรู้ส่วนใหญ่ของโมเดล
- RMSNorm — ปรับสเกลตัวเลขให้นิ่งก่อนเข้าแต่ละขั้น
- Weight tying — ชั้นแปลงคำเป็นเวกเตอร์ใช้เมทริกซ์เดียวกับชั้นแปลงกลับเป็นคำ ประหยัด 4.2 ล้านพารามิเตอร์
การเทรน
เทรน 8,000 steps เห็นข้อความรวมราว 262 ล้าน tokens จากชุดข้อมูลราว 70 ล้าน tokens (อ่านวนราว 3.7 รอบ) ใช้ความแม่นยำ bf16, AdamW, learning rate แบบ warmup + cosine และหยุดเองเมื่อเริ่มท่องจำแทนที่จะเข้าใจ
ข้อมูลผสมจากนิทานสั้น (สอนไวยากรณ์), บทความ (สอนคำศัพท์), และบทสนทนาจริง (สอนการโต้ตอบ) ผลสุดท้ายได้ validation loss 2.6473 (perplexity ≈ 14 คือเวลาทายคำถัดไป โมเดลลังเลอยู่ระหว่างราว 14 ตัวเลือก)
ข้อจำกัด
- ไม่มีความรู้ที่เชื่อถือได้ — 34 ล้านพารามิเตอร์ไม่พอเก็บข้อเท็จจริง โมเดลจะแต่งชื่อ สถานที่ และข้อมูลขึ้นเองอย่างมั่นใจ
- อาจพูดหยาบหรือไม่เหมาะสม — ส่วนหนึ่งของข้อมูลเทรนเป็นแชทจริงจาก Discord
- จำบริบทได้แค่ 512 tokens — คุยยาวเกินราว 5-10 เทิร์นจะเริ่มหลุด
- ภาษาอังกฤษเท่านั้น — ไม่ได้เทรนภาษาไทย
- เป็นโปรเจกต์เพื่อการเรียนรู้ ไม่เหมาะกับการใช้งานจริงใดๆ
English
What is this
CircleZone 1.0 33M is a small language model for casual English chat. The architecture was written by hand and the weights were trained from random initialization on a single NVIDIA RTX 4060 Laptop GPU (8 GB) — it is not a fine-tune of anyone else's model.
The goal was to see how much language a model small enough to train on a personal computer can learn. It writes grammatical English and replies with natural conversational timing, but has no reliable knowledge about the real world.
How it works
The model does one thing: predict the next token. Text is split into small pieces (tokens); the model scores every possible next token, samples one, appends it, and repeats until a reply is formed.
Nothing about chatting is hard-coded. The behaviour comes from seeing hundreds of thousands of conversations during training and picking up the patterns.
Architecture
A decoder-only Transformer in the same family as GPT, Llama and Qwen. Every component matches Qwen3, so it runs in LM Studio, llama.cpp, Ollama and transformers as-is.
- Grouped-query attention — each token looks back at relevant earlier tokens; 8 query heads share 4 key/value heads, halving attention memory
- RoPE — encodes token positions by rotating vectors, so the model knows how far apart words are
- QK-Norm — normalizes queries and keys before attention for stable training
- SwiGLU — the feed-forward layers that hold most of the model's knowledge
- RMSNorm — keeps activations at a stable scale between steps
- Tied embeddings — the input and output layers share one matrix, saving 4.2M parameters
Training
8,000 steps covering ~262M tokens of text from a ~70M tokens dataset (about 3.7 passes), with bf16 precision, AdamW, warmup + cosine learning-rate schedule, and early stopping when the model starts memorizing instead of generalizing.
The data mixes short stories (grammar), articles (vocabulary) and real conversations (turn-taking). Final validation loss is 2.6473 (perplexity ≈ 14: when predicting the next token, the model is choosing among roughly 14 candidates).
Limitations
- No reliable knowledge — 34M parameters cannot store facts; it confidently invents names, places and details
- May be rude or inappropriate — part of the training data is real Discord chat
- 512-token context — conversations longer than ~5-10 turns degrade
- English only — no Thai or other languages in training
- A learning project — not suitable for any real-world use
สเปก / Specifications
| Parameters / พารามิเตอร์ | 33,697,536 (33.7M) |
| Layers × width / ชั้น × ความกว้าง | 10 × 512 |
| Attention heads (query / KV) | 8 / 4, head dim 64 |
| Feed-forward size | 1408 |
| Context / ความจำบริบท | 512 tokens |
| Vocabulary / พจนานุกรม | 8,192 (byte-level BPE) |
| Training steps | 8,000 |
| Validation loss | 2.6473 (perplexity 14.1) |
| Hardware | NVIDIA RTX 4060 Laptop, 8 GB |
การแบ่งพารามิเตอร์ / Parameter breakdown
| ส่วน / Component | จำนวน / Count | สัดส่วน / Share |
|---|---|---|
| SwiGLU feed-forward (10 layers) | 21,626,880 | 64.2% |
| Attention (10 layers) | 7,864,320 | 23.3% |
| Embedding (shared with output) | 4,194,304 | 12.4% |
| RMSNorm | 12,032 | 0.04% |
| รวม / Total | 33,697,536 | 100% |
แต่ละชั้นมี 2,950,272 พารามิเตอร์ · Each layer has 2,950,272 parameters.
ตัวอย่างคำตอบ / Example replies
คำตอบจริงจากโมเดล ไม่ได้คัดเลือก · Real, unedited samples.
| คุณ / You | โมเดล / Model |
|---|---|
| hello, how are you? | i'm good and you?? |
| what do you do for fun? | Just work on a hobby, and I'll focus on everything |
| i had a bad day at work | It's ok. I'm glad you enjoyed it. |
| do you like music? | Nope, just a bit of my time to listen to. |
ผลทดสอบมาตรฐาน / Benchmarks
วัดด้วย lm-evaluation-harness 0.4.13 แบบ 0-shot
ไม่ใช้ chat template และไม่เปิดโหมดคิด ค่าเป็น % ความแม่น ± ค่าคลาดเคลื่อนมาตรฐาน
ARC, HellaSwag, PIQA และ Global-PIQA ใช้ acc_norm ชุดอื่นใช้ acc
Measured with lm-evaluation-harness 0.4.13, 0-shot,
no chat template, thinking off. Values are % accuracy ± standard error;
acc_norm for ARC, HellaSwag, PIQA and Global-PIQA, acc elsewhere.
| Benchmark | ภาษา / Lang | เดาสุ่ม / Random | CircleZone 1.0 33M | CircleZone 2.0 70M |
|---|---|---|---|---|
| XCOPA-th | th | 50% | 53.4 ± 2.2 | 55.6 ± 2.2 |
| Belebele-th | th | 25% | 22.7 ± 1.4 | 24.2 ± 1.4 |
| Global-PIQA-th | th | 25% | 27.2 ± 4.4 | 21.4 ± 4.1 |
| ARC-Easy | en | 25% | 30.8 ± 0.9 | 32.5 ± 1.0 |
| ARC-Challenge | en | 25% | 21.8 ± 1.2 | 22.4 ± 1.2 |
| HellaSwag | en | 25% | 27.1 ± 0.4 | 27.0 ± 0.4 |
| PIQA | en | 50% | 56.0 ± 1.2 | 54.7 ± 1.2 |
| Winogrande | en | 50% | 50.1 ± 1.4 | 50.0 ± 1.4 |
| LAMBADA | en | 0% | 15.0 ± 0.5 | 16.7 ± 0.5 |
| LAMBADA perplexity ↓ | en | – | 586 | 726 |
สรุปตามจริง — ข้อสอบส่วนใหญ่ได้ใกล้การเดาสุ่ม ซึ่งเป็นเรื่องปกติของโมเดลขนาดต่ำกว่า 100M ที่สูงกว่าสุ่มชัดเจนมีแค่ ARC-Easy, PIQA และ LAMBADA (HellaSwag สูงกว่าแค่ราว 2 จุด) ภาษาไทยมีแค่ XCOPA-th ที่สูงกว่าสุ่มเล็กน้อย Belebele มีบทความยาวเกิน context 512 tokens จึงถูกตัดหัวบทความ 2.0 ถูก fine-tune โหมดคิดก่อนวัด ซึ่งทำให้ perplexity ของ LAMBADA สูงขึ้น (ทดลองกับ 1.0 พบว่า perplexity เพิ่มจาก 586 เป็นราว 1,500 หลังสอนคิด)
Honest summary — most tasks are at chance, as expected below 100M parameters. Only ARC-Easy, PIQA and LAMBADA are clearly above chance (HellaSwag by only ~2 points); in Thai only XCOPA-th is slightly above. Belebele passages exceed the 512-token context and get truncated. 2.0 was fine-tuned for thinking before evaluation, which raises LAMBADA perplexity (on 1.0 the same fine-tune moved it from 586 to ~1,500).
ผลดิบ / Raw results: benchmarks/
วิธีใช้ / Usage
LM Studio — ค้นหา IAMPOOM/CircleZone-1.0-33M แล้วดาวน์โหลด CircleZone-1.0-33M-F16.gguf · ตั้ง context ไม่เกิน 512
Search for IAMPOOM/CircleZone-1.0-33M and download CircleZone-1.0-33M-F16.gguf. Keep context at 512 or below.
transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("IAMPOOM/CircleZone-1.0-33M")
model = AutoModelForCausalLM.from_pretrained("IAMPOOM/CircleZone-1.0-33M")
msgs = [{"role": "user", "content": "hello, how are you?"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt")
out = model.generate(ids, max_new_tokens=60)
print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))
ข้อมูลที่ใช้เทรน / Training data
| Dataset | License |
|---|---|
| roneneldan/TinyStories | cdla-sharing-1.0 |
| mookiezi/Discord-Dialogues | apache-2.0 |
| HuggingFaceTB/smollm-corpus | odc-by |
| HuggingFaceTB/smol-smoltalk | apache-2.0 |
| Estwld/empathetic_dialogues_llm | apache-2.0 (original Facebook release: cc-by-nc-4.0) |
| HuggingFaceTB/smoltalk | apache-2.0 |
| tatsu-lab/alpaca | cc-by-nc-4.0 |
| databricks/databricks-dolly-15k | cc-by-sa-3.0 |
ใบอนุญาต / License
ข้อมูลเทรนบางส่วนอนุญาตเฉพาะการใช้แบบไม่แสวงกำไร โมเดลนี้จึงเผยแพร่ภายใต้ cc-by-nc-4.0 ห้ามใช้เชิงพาณิชย์
Some training data is licensed for non-commercial use only, so this model is released under cc-by-nc-4.0.
- Downloads last month
- 54
Datasets used to train IAMPOOM/CircleZone-1.0-33M
tatsu-lab/alpaca
HuggingFaceTB/smollm-corpus
Evaluation results
- acc (0-shot) on XCOPA-thlm-evaluation-harness 0.4.1353.400
- acc (0-shot) on Belebele-thlm-evaluation-harness 0.4.1322.670
- acc_norm (0-shot) on Global-PIQA-thlm-evaluation-harness 0.4.1327.180
- acc_norm (0-shot) on ARC-Easylm-evaluation-harness 0.4.1330.810
- acc_norm (0-shot) on ARC-Challengelm-evaluation-harness 0.4.1321.840
- acc_norm (0-shot) on HellaSwaglm-evaluation-harness 0.4.1327.080
- acc_norm (0-shot) on PIQAlm-evaluation-harness 0.4.1355.980
- acc (0-shot) on Winograndelm-evaluation-harness 0.4.1350.120