GPU/CPU ئۈستىدە Llama، Mistral، Qwen، Phi قاتارلىق چوڭ تىل مودېللىرىنى API خارجىيىتىسىز، ئىنتېرنېتسىز ۋە مەخپىيەت قوغدالغان ھالدا ئىجرا قىلىش. idirak.com ئۈچۈن ئەڭ ئىقتىساتلىق تاللاش.
# يەرلىك Ollama تاللا ───────────────────────────────── ✓ شىركەت ئىچىدىكى سىر ھۆججەتلەرنى تەھلىل قىلغاندا ✓ كۆپ مىقداردىكى batch ئىجرا (API خارجىيىتى يۇقىرى بولغاندا) ✓ ئىنتېرنېت يوق مۇھىتتا (embedded، IoT، قىشلاق) ✓ GDPR / HIPAA ماسلىشىش تەلەپ بولغاندا ✓ تەجرىبە ۋە تەرەققىيات مۇھىتتا ✓ Fine-tuned مودېلنى يايدۇرغاندا # API (OpenAI/Claude) تاللا ────────────────────────── → ئەڭ يۇقىرى ئىقتىدار تەلەپ بولغاندا (GPT-4o، Claude 4) → ئىشلەتكۈچى كۆپ بولغاندا (مىقياسلاش ئاسان) → Multimodal (رەسىم، ئاۋاز) ۋەزىپىلىرىدە → ئاپپارات يوق، پەقەت كودنى يازغاندا # ئارلاش — ئەڭ ئاقىللىق ───────────────────────────── ★ ئاددىي ۋەزىپە → يەرلىك Ollama (ئارزان) ★ مۇرەككەپ ۋەزىپە → Claude/GPT-4o (كۈچلۈك) ★ LangChain ئارقىلىق ئىككىسىنى بىرگە باشقۇرۇش
# ── Mac / Linux (بىر قۇر) ────────────────────────────── curl -fsSL https://ollama.com/install.sh | sh # ── Windows ──────────────────────────────────────────── # https://ollama.com/download/OllamaSetup.exe چۈشۈرۈپ ئورنىت # ── Docker ───────────────────────────────────────────── # CPU فەقەت docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama # NVIDIA GPU بىلەن docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama # ── تەكشۈرۈش ─────────────────────────────────────────── ollama --version # → ollama version 0.4.x curl http://localhost:11434 # → "Ollama is running" # ── تۇنجى مودېل چۈشۈرۈش ─────────────────────────────── ollama pull llama3.2:3b # 2GB — تېز سىناق ئۈچۈن ollama pull llama3.1:8b # 4.7GB — ئادەتتىكى ئىشلىتىش ollama run llama3.2:3b # چۈشۈرۈپ بىۋاسىتە باشلا # ── مۇھىت ئۆزگەرگۈچلەر ───────────────────────────────── # Linux/Mac export OLLAMA_HOST=0.0.0.0:11434 # تارماق ئارقىلىق كىرىشكە رۇخسەت export OLLAMA_MODELS=/data/models # مودېل ساقلاش يولى export OLLAMA_NUM_PARALLEL=4 # بىر ۋاقىتتا نەچچە سوئال export CUDA_VISIBLE_DEVICES=0,1 # GPU تاللاش
| مودېل ئۆلچىمى | RAM / VRAM | تېزلىك (token/s) | تەۋسىيە ئاپپارات |
|---|---|---|---|
| 1B – 3B | 4GB RAM | 20-50 t/s CPU، 100+ GPU | ھەر قانداق MacBook |
| 7B – 8B | 8GB RAM/VRAM | 10-30 t/s CPU، 60-80 GPU | M1/M2 Mac، RTX 3060 |
| 13B – 14B | 16GB RAM/VRAM | 5-15 t/s CPU، 40-60 GPU | M2 Pro، RTX 3080 |
| 30B – 34B | 32GB RAM/VRAM | 2-8 t/s CPU، 25-40 GPU | M2 Max، RTX 4090 |
| 70B | 48GB+ VRAM | 1-4 t/s CPU، 15-25 GPU | A100، 2× RTX 4090 |
| 70B Q4 | 24GB VRAM | 8-15 t/s GPU | Q4 سانلىق تۆۋەنلىتىلگەن |
# ══ مودېل باشقۇرۇش ═══════════════════════════════════ ollama pull llama3.1:8b # چۈشۈرۈش ollama pull qwen2.5:7b-q4_0 # Q4 سانلىق تۆۋەنلىتىلگەن ollama list # بارلىق ئورنىتىلغان مودېللار ollama show llama3.1:8b # مودېل ئۇچۇرى ollama rm llama3.1:8b # ئۆچۈرۈش ollama cp llama3.1:8b mymodel # كۆچۈرۈش ollama ps # ھازىر ئىجرادىكى مودېللار # ══ سۆھبەت ═══════════════════════════════════════════ ollama run llama3.1:8b # ئىنتېراكتىپ سۆھبەت # >>> سوئالىڭىزنى يېزىڭ # >>> /bye — چىقىش # >>> /clear — تارىخنى تازىلاش # >>> /set temperature 0.5 — تەڭشەش # >>> /show info — مودېل ئۇچۇرى # ══ بىر قېتىملىق سوئال ════════════════════════════════ echo "Python دا hello world يازغىن" | ollama run llama3.1:8b ollama run llama3.1:8b "ئۇيغۇر تىلى ھەققىدە قىسقا چۈشەندۈر" # ══ ھۆججەت بىلەن ══════════════════════════════════════ cat document.txt | ollama run llama3.1:8b "بۇ ھۆججەتنى خۇلاسىلا" # ══ Modelfile بىلەن ئۆز مودېل ════════════════════════ cat > Modelfile <<EOF FROM llama3.1:8b PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER num_ctx 8192 SYSTEM """ سەن idirak.com نىڭ AI ياردەمچىسىسەن. پەقەت ئۇيغۇرچە جاۋاپ بەر. كىسپانە ۋە دوستانە تونداش. """ EOF ollama create idirak-ai -f Modelfile # قۇرۇش ollama run idirak-ai # ئىجرا ollama push idirak-ai # Ollama Hub غا يوللاش # ══ سانلىق تۆۋەنلىتىش (Quantization) ════════════════ # q4_0 → ئەڭ كىچىك، ئەڭ ئاستا سۈپەت # q4_K_M → تەۋسىيە: باھا-ئىقتىدار توغرا تازلاپ # q8_0 → يۇقىرى سۈپەت، چوڭرەك ھۆججەت # fp16 → تولۇق توغرىلىق (VRAM كۆپ كېرەك) ollama pull llama3.1:8b-q4_K_M # تەۋسىيە
pip install ollama
import ollama # ── 1. ئاددىي سوئال ───────────────────────────────────── response = ollama.chat( model = "llama3.1:8b", messages = [{"role": "user", "content": "ئۇيغۇر تىلى نىمە تىل؟"}] ) print(response["message"]["content"]) # ── 2. System Prompt + كۆپ مەرتىبىلىك ────────────────── messages = [ {"role": "system", "content": "سەن ئۇيغۇرچە مۇتەخەسسىسىسەن."}, {"role": "user", "content": "LangChain نىمە؟"}, {"role": "assistant", "content": "LangChain — LLM چارچۇۋىسى..."}, {"role": "user", "content": "ئۇنداقتا Ollama نىمە؟"}, ] r = ollama.chat(model="llama3.1:8b", messages=messages) # ── 3. Streaming ───────────────────────────────────────── for chunk in ollama.chat( model = "llama3.1:8b", messages = [{"role": "user", "content": "ئۇيغۇرستان ھەققىدە يازغىن"}], stream = True ): print(chunk["message"]["content"], end="", flush=True) # ── 4. Generate (تامغا مۆلچەرى) ───────────────────────── r = ollama.generate( model = "llama3.1:8b", prompt = "print('hello') # Python دا", options = { "temperature": 0.2, # كود ئۈچۈن تۆۋەن "top_p": 0.9, "num_ctx": 4096, # مەزمۇن دەرىچىسى "num_predict": 512, # ئەڭ ئۇزۇن چىقىم "stop": ["```", "###"], # توختاش بەلگىسى } ) print(r["response"]) # ── 5. Embedding ───────────────────────────────────────── embed = ollama.embeddings( model = "nomic-embed-text", # ollama pull nomic-embed-text prompt = "ئۇيغۇر تىلى تۈركىي تىللار ئائىلىسىگە كىرىدۇ" ) vector = embed["embedding"] # → [0.12, -0.34, ...] (768 ئۆلچەم) print(f"ۋېكتور ئۆلچىمى: {len(vector)}") # ── 6. Async ───────────────────────────────────────────── import asyncio from ollama import AsyncClient async def async_chat(): client = AsyncClient() response = await client.chat( model = "llama3.1:8b", messages = [{"role": "user", "content": "سالام!"}] ) return response["message"]["content"] asyncio.run(async_chat()) # ── 7. رەسىم بىلەن (Vision) ────────────────────────────── import base64 with open("image.jpg", "rb") as f: img_b64 = base64.b64encode(f.read()).decode() r = ollama.chat( model = "llava:13b", messages = [{ "role": "user", "content": "بۇ رەسىمدە نېمە بار؟", "images": [img_b64] }] ) print(r["message"]["content"])
from langchain_ollama import ChatOllama, OllamaEmbeddings from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # ── 1. ChatOllama مودېل ────────────────────────────────── llm = ChatOllama( model = "llama3.1:8b", temperature = 0.7, num_ctx = 8192, # مەزمۇن دەرىچىسى num_gpu = 1, # GPU سانى base_url = "http://localhost:11434", ) # ── 2. ئاددىي زەنجىر ───────────────────────────────────── chain = ( ChatPromptTemplate.from_template("{سوئال} ھەققىدە ئۇيغۇرچە چۈشەندۈر.") | llm | StrOutputParser() ) ans = chain.invoke({"سوئال": "RAG"}) print(ans) # ── 3. Ollama Embedding + Chroma RAG ───────────────────── from langchain_chroma import Chroma from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import TextLoader # ھەقسىز Embedding (Ollama ئارقىلىق) embed = OllamaEmbeddings(model="nomic-embed-text") # ھۆججەت يوللاش + بۆلۈش docs = TextLoader("uyghur_knowledge.txt").load() chunks = RecursiveCharacterTextSplitter(chunk_size=500).split_documents(docs) # Vector DB قۇرۇش (تولۇق ھەقسىز!) vectordb = Chroma.from_documents(chunks, embed) # RAG زەنجىرى from langchain.chains import create_retrieval_chain from langchain.chains.combine_documents import create_stuff_documents_chain qa_prompt = ChatPromptTemplate.from_messages([ ("system", "پەقەت بىرىلگەن مەزمۇنغا ئاساسلانغان جاۋاپ بەر:\n{context}"), ("human", "{input}"), ]) rag_chain = create_retrieval_chain( vectordb.as_retriever(search_kwargs={"k": 4}), create_stuff_documents_chain(llm, qa_prompt) ) result = rag_chain.invoke({"input": "ئۇيغۇر تىلى قانداق تىل؟"}) print(result["answer"]) # ── 4. Hybrid: Ollama يەرلىك + Claude ئالىي ───────────── from langchain_anthropic import ChatAnthropic from langchain_core.runnables import RunnableBranch def is_complex(x): # مۇرەككەپ سوئاللارنى Claude غا يوللا return len(x["input"]) > 100 smart_chain = RunnableBranch( (is_complex, ChatAnthropic(model="claude-haiku-4-5-20261001")), llm # ئاددىي → يەرلىك Ollama ) | StrOutputParser()
# ── REST API ئۇچۇرى ───────────────────────────────────── # ئاساسلىق URL: http://localhost:11434 # ── 1. /api/chat ───────────────────────────────────────── curl http://localhost:11434/api/chat -d '{ "model": "llama3.1:8b", "messages": [{"role": "user", "content": "سالام!"}], "stream": false }' # ── 2. /api/generate ───────────────────────────────────── curl http://localhost:11434/api/generate -d '{ "model": "llama3.1:8b", "prompt": "Python دا Fibonacci يازغىن", "stream": false, "options": {"temperature": 0.2, "num_ctx": 4096} }' # ── 3. /api/embeddings ─────────────────────────────────── curl http://localhost:11434/api/embeddings -d '{ "model": "nomic-embed-text", "prompt": "ئۇيغۇر تىلى" }' # ── 4. OpenAI ماسلاشقان API ───────────────────────────── # Ollama OpenAI API نى ماسلايدۇ! # base_url = "http://localhost:11434/v1" from openai import OpenAI client = OpenAI( base_url = "http://localhost:11434/v1", api_key = "ollama" # ئىختىيارى ) response = client.chat.completions.create( model = "llama3.1:8b", messages = [{"role": "user", "content": "ئۇيغۇر تىلى ھەققىدە"}], ) print(response.choices[0].message.content) # ── 5. Python requests بىلەن ───────────────────────────── import requests, json r = requests.post( "http://localhost:11434/api/chat", json = { "model": "llama3.1:8b", "messages":[{"role": "user", "content": "سالام!"}], "stream": False } ) print(r.json()["message"]["content"])
| نۇقتا | ئۇسۇل | ئىشلىتىش | ئالاھىدىلىك |
|---|---|---|---|
| /api/chat | POST | سۆھبەت — كۆپ مەرتىبىلىك messages بىلەن | ئاساسلىق |
| /api/generate | POST | بىر prompt دىن چىقىم — تامغا مۆلچەرى | ئاساسلىق |
| /api/embeddings | POST | تېكىستنى ۋېكتورغا ئايلاندۇرۇش | RAG |
| /api/tags | GET | ئورنىتىلغان بارلىق مودېللار تىزىملىكى | باشقۇرۇش |
| /api/pull | POST | مودېل چۈشۈرۈش (API ئارقىلىق) | باشقۇرۇش |
| /api/delete | DELETE | مودېل ئۆچۈرۈش | خەتەرلىك |
| /api/show | POST | مودېل تەپسىلاتى، Modelfile، parameters | باشقۇرۇش |
| /v1/chat/completions | POST | OpenAI ماسلاشقان API نۇقتىسى | ماسلاشقان |
# ── Docker بىلەن (ئەڭ ئاددىي) ────────────────────────── docker run -d -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main # http://localhost:3000 ئارقىلىق كىرىڭ # ── pip بىلەن ─────────────────────────────────────────── pip install open-webui open-webui serve # → http://localhost:8080 # ── Docker Compose (Ollama + WebUI بىرگە) ─────────────── # docker-compose.yml ھۆججىتى: version: '3.8' services: ollama: image: ollama/ollama volumes: ['ollama:/root/.ollama'] ports: ['11434:11434'] webui: image: ghcr.io/open-webui/open-webui:main ports: ['3000:8080'] environment: - OLLAMA_BASE_URL=http://ollama:11434 depends_on: [ollama] volumes: {ollama:}
# ── GPU ئىشلىتىشنى تەكشۈرۈش ───────────────────────────── ollama run llama3.1:8b # ئىجرا دەۋرىدە nvidia-smi # NVIDIA GPU كۆزىتىش ollama ps # VRAM ئىشلىتىشنى كۆرۈش # ── GPU قەۋەت سانى تەڭشەش ─────────────────────────────── # OLLAMA_NUM_GPU env: -1=ئاپتوماتىك، 0=CPU، 1+=GPU قەۋەت سانى OLLAMA_NUM_GPU=-1 ollama serve # ── Modelfile ئارقىلىق تەپسىلىي تەڭشەش ───────────────── FROM qwen2.5:7b # ئاساسلىق پارامېتىرلار PARAMETER temperature 0.7 # 0=جامع 2=ئىجادىيچان PARAMETER top_p 0.9 # Nucleus Sampling PARAMETER top_k 40 # Top-K Sampling PARAMETER num_ctx 8192 # مەزمۇن دەرىچىسى (RAM ئاشىدۇ) PARAMETER num_batch 512 # Batch ئۆلچىمى (GPU VRAM ئاشىدۇ) PARAMETER num_gpu 999 # بارلىق GPU قەۋەتلىرى PARAMETER num_thread 8 # CPU تىزمىسى سانى PARAMETER num_keep 24 # System Prompt تامغا سانى PARAMETER repeat_penalty 1.1 # تەكرارلىقنى بوستۇرۇش SYSTEM """سەن ئۇيغۇرچە AI ياردەمچىسىسەن.""" # ── Flash Attention (تېزلىك +30%) ─────────────────────── PARAMETER use_mmap 1 # RAM Mapping PARAMETER low_vram 0 # VRAM چەكلەنگەن بولسا 1 # ── Q4_K_M — تەۋسىيە سانلىق تۆۋەنلىتىش ───────────────── # q4_K_M: ئەڭ ياخشى باھا-ئىقتىدار تازلاپ # q5_K_M: بىر ئاز يۇقىرى سۈپەت، چوڭرەك # q8_0: ئۇنىۋەرسال بولسا تەۋسىيە ollama pull llama3.1:8b-instruct-q4_K_M
| ئاپپارات | token/s | RAM ئىشلىتىش | تەۋسىيە ئىشلىتىش |
|---|---|---|---|
| Apple M3 Pro (18GB) | ~45 t/s | ~8 GB | ئەڭ ياخشى يەرلىك |
| Apple M2 (8GB) | ~25 t/s | ~7 GB | ياخشى |
| NVIDIA RTX 4090 (24GB) | ~80 t/s | ~6 GB VRAM | ئەڭ تېز |
| NVIDIA RTX 3080 (10GB) | ~55 t/s | ~6 GB VRAM | ياخشى GPU |
| Intel i9 CPU (32GB) | ~8 t/s | ~8 GB | ئاستا |
| Raspberry Pi 5 (8GB) | ~1 t/s | ~7 GB | 3B مودېل ئۈچۈن |
| مۇلازىمەت | مودېل | 1M Token خارجىيىتى | مەخپىيەت |
|---|---|---|---|
| Ollama (يەرلىك) | Llama 3.1 8B | $0.00 (پەقەت ئىلكتىر) | تولۇق مەخپىيەت |
| Ollama (يەرلىك) | Qwen 2.5 7B | $0.00 | تولۇق مەخپىيەت |
| OpenAI | GPT-4o-mini | $0.15 كىرگۈزمە / $0.60 چىقىم | ئورتا |
| Anthropic | Claude Haiku | $0.25 كىرگۈزمە / $1.25 چىقىم | ئورتا |
| OpenAI | GPT-4o | $2.50 كىرگۈزمە / $10 چىقىم | تاشقى سېرۋىر |
| Anthropic | Claude Sonnet | $3.00 كىرگۈزمە / $15 چىقىم | تاشقى سېرۋىر |