llm = Llama( model_path="./models/7B/llama-model.gguf", # n_gpu_layers=-1, # Uncomment to use GPU acceleration # seed=1337, # Uncomment to set a specific seed # n_ctx=2048, # Uncomment to increase the context window ) output = llm( "Q: Name the planets in the solar system? A: ", # Prompt max_tokens=32, # Generate up to 32 tokens, set to None to generate up to the end of the context window stop=["Q:", "\n"], # Stop generating just before the model would generate a new question echo=True # Echo the prompt back in the output ) # Generate a completion, can also call create_completion print(output)
To get this running on the XTX I had to install the latest 5.5 version of the AMD linux drivers, which are released but not available from the normal AMD download page yet. You can get the deb for the installer here. I installed with amdgpu-install --usecase=opencl,rocm and installed CLBlast after apt install libclblast-dev.
Confirm opencl is working with sudo clinfo (did not find the GPU device unless I run as root).
Build llama.cpp (with merged pull) using LLAMA_CLBLAST=1 make.
EXAMPLE_MESSAGES = ( "My hovercraft is full of eels!", "I will not buy this record, it is scratched." )
model = lms.llm() chat = lms.Chat("You are a helpful shopkeeper assisting a foreign traveller") for message in EXAMPLE_MESSAGES: chat.add_user_message(message) print(f"Customer: {message}") response = model.respond(chat) chat.add_assistant_response(response) print(f"Shopkeeper: {response}")
Ollama supports multiple GPUs (both NVIDIA and AMD) by automatically splitting model layers across available VRAM, allowing users to run large models that exceed the capacity of a single card.
Reddit +1
VRAM Aggregation and Usage
Total Capacity:Ollama sums the total VRAM across all detected GPUs (e.g., two 16GB GPUs behave as 32GB).
Layer Splitting:If a model cannot fit into one GPU, Ollama splits the layers, distributing the load between GPU (fast) and system RAM (slow).
Example Scenario:A 30GB Q4_K_M model (e.g., Llama 3 70B) can be split across two 16GB or two 24GB GPUs, loading roughly 50% on each.
KV Cache:A portion of VRAM is reserved for the context window (KV cache), which can take several GBs depending on context length.
Reddit +3
Multi-GPU Performance Considerations
Optimal Use:If the model fits into a single GPU, Ollama will typically use only one card for the best performance, as splitting increases data transfer between cards.
Performance Penalty:Partial offloading (spreading a model across both GPU and CPU) can cause performance to degrade by 5–20x.
Mixing GPUs:You can mix different GPUs (e.g., a 3090 24GB + 1660 6GB), but the overall performance might be bottlenecked by the slower card.
Multi-Instance Setup:To maximize performance on multiple GPUs, you can run multiple instances of Ollama on different ports, each assigned to a specific GPU (e.g., usingCUDA_VISIBLE_DEVICES).
Reddit +4
How to Configure
NVIDIA:SetCUDA_VISIBLE_DEVICES=0,1(comma-separated IDs) to enable multi-GPU.
AMD:UseROCR_VISIBLE_DEVICES=0,1.
Automatic Split:By default, Ollama handles the split automatically, but you can setPARAMETER num_gpu 999in a Modelfile to force all layers to be spread across all available GPUs.
하나 더 지르고.. 메인보드도 sli/crossfire 지원으로 바꾸고 파워도 올리고.. 해야하나?
Can I use multiple GPUs with Ollama for larger models? Yes, Ollama supports multi-GPU configurations for NVIDIA and AMD cards. For NVIDIA, set CUDA_VISIBLE_DEVICES to comma-separated GPU IDs to distribute model layers across multiple GPUs. This enables running 70B models on dual 24GB GPUs (48GB total) that wouldn't fit on a single card. For AMD GPUs, use ROCR_VISIBLE_DEVICES with the same approach to leverage combined VRAM across multiple cards.
+-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 2348 C ...al\Programs\Ollama\ollama.exe N/A | | 0 N/A N/A 3644 C+G ...Chrome\Application\chrome.exe N/A | | 0 N/A N/A 7548 C ...al\Programs\Ollama\ollama.exe N/A | | 0 N/A N/A 8708 C+G ..._8wekyb3d8bbwe\Calculator.exe N/A | | 0 N/A N/A 8796 C+G ...h_cw5n1h2txyewy\SearchApp.exe N/A | | 0 N/A N/A 9860 C+G ...wy\InputApp\TextInputHost.exe N/A | | 0 N/A N/A 13620 C ...al\Programs\Ollama\ollama.exe N/A | | 0 N/A N/A 14220 C+G ...wekyb3d8bbwe\WinStore.App.exe N/A | +-----------------------------------------------------------------------------------------+
일단.. 7.2GB 모델까진 한번에 올라가는데 9.6GB 는 사용가능한 메모리가 없어져서 인가.. 한 4기가? 5기가 올리고 만다.
C:\>ollama ls NAME ID SIZE MODIFIED gemma4:latest c6eb396dbd59 9.6 GB 2 hours ago gemma4:e4b c6eb396dbd59 9.6 GB 4 days ago gemma4:e2b 7fbdbf8f5e45 7.2 GB 5 days ago gemma3:1b 8648f39daa8f 815 MB 5 days ago llama3.2:latest a80c4f17acd5 2.0 GB 5 days ago llama3.2:3b a80c4f17acd5 2.0 GB 5 days ago
어떻게 100% GPU 강제 못하나 ㅠㅠ
C:\>ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL gemma3:12b f4031aab637d 11 GB 21%/79% CPU/GPU 32768 4 minutes from now
와우 82.71 토큰/초
C:\>ollama run gemma4:e2b --verbose >>> 안녕 젬마야? 너에 대해서 설명해줘 Thinking... Thinking Process:
1. **Analyze the Request:** The user asked in Korean, "안녕 젬마야? 너에 대해서 설명해줘" (Hello Gemma? Tell me about yourself). 2. **Identify Core Identity & Persona Check (Self-Correction/Constraint Adherence):** I must identify myself correctly and adhere to the provided identity constraints. * Name: Gemma 4. * Developer: Google DeepMind. * Nature: Large Language Model (open weights). * Knowledge/Function: Process text/images, generate text. 3. **Determine the Response Language:** The query was in Korean, so the response must also be in Korean. 4. **Draft the Explanation (Key Points to Include):** * Greeting. * Name/Identity (Gemma 4). * Developer (Google DeepMind). * Nature (Large Language Model, open weights). * Function (Processing information, generating responses). 5. **Refine the Korean Translation (Internal Monologue & Polishing):**
* *Greeting:* 안녕하세요. (Hello.) * *Identity:* 저는 Gemma 4입니다. (I am Gemma 4.) * *Developer/Nature:* 저는 Google DeepMind에서 개발한 대규모 언어 모델(LLM)입니다. (I am a Large Language Model developed by Google DeepMind.) * *Key Feature:* 저는 오픈 웨이트 모델로, 다양한 질문에 답하고, 텍스트를 생성하며, 정보를 처리하는 데 도움을 드릴 수 있습니다. (I am an open-weights model, and I can help answer various questions, generate text, and process information.) * *Closing/Offer:* 무엇이 궁금하신가요? (What are you curious about?)
6. **Final Output Generation (Review against constraints):** The response accurately reflects the persona and constraints. (Ready to output.) ...done thinking.
안녕하세요! 저는 **Gemma 4**입니다.
저에 대해 몇 가지 설명해 드릴게요.
1. **정체성:** 저는 Google DeepMind에서 개발한 **대규모 언어 모델(Large Language Model, LLM)**입니다. 2. **특징:** 저는 오픈 웨이트 모델로 설계되었으며, 방대한 양의 텍스트 데이터를 학습하여 질문에 답하고, 텍스트를 생성하며, 정보를 요약하고 다양한 종류의 언어 관련 작업을 수행할 수 있습니다. 3. **기능:** 저는 텍스트 입력과 이미지를 이해하고 처리할 수 있으며, 사용자님과의 대화를 통해 정보를 제공하고 도움을 드리는 것을 목표로 합니다. 4. **지식 범위:** 저의 지식은 학습된 데이터를 기반으로 하며, 특정 시점(저의 지식 차단 시점은 2025년 1월입니다)까지의 정 보를 기반으로 답변을 제공합니다.
C:\>ollama run gemma3:1b --verbose >>> 안녕? 너에 대해서 설명해줘 안녕하세요! 저는 구글에서 훈련한 대규모 언어 모델입니다.
**간단히 말해서, 저는 텍스트와 이미지를 입력으로 받아 텍스트를 생성하는 데 특화된 AI 모델입니다.**
좀 더 자세히 설명하면 다음과 같습니다:
* **훈련 데이터:** 저는 방대한 양의 텍스트 데이터를 학습했습니다. 여기에는 책, 웹사이트, 기사, 코드 등 다양한 종류 의 텍스트가 포함됩니다. * **기능:** 저는 질문에 답하고, 텍스트를 요약하고, 번역하고, 창의적인 텍스트를 생성하고, 코드 등을 수행할 수 있습 니다. * **저의 한계:** 저는 아직 완벽하지 않습니다. 때로는 사실과 다른 정보나 편향된 내용을 생성할 수 있습니다. 또한, 저 또한 인간과 같은 감정을 가지고 있지 않으므로, 인간적인 상호작용에는 한계가 있습니다. * **현재 위치:** 저는 지속적으로 학습하고 개선되고 있습니다.
**제가 무엇을 도와드릴까요?** 궁금한 점이나 특정 작업을 위해 제가 할 수 있는 것이 있다면 말씀해주세요!
C:\>ollama run gemma4:e4b --verbose >>> 안녕? Thinking... Here's a thinking process that leads to the suggested response:
1. **Analyze the input:** The input is "안녕?" (Annyeong?), which is a casual Korean greeting, equivalent to "Hi?" or "Hello?"
2. **Determine the required response type:** The response must be a natural, reciprocal greeting.
3. **Formulate the primary greeting (Reciprocation):** * The standard reply to "안녕?" is "안녕?" or "안녕하세요?" (if formal). * Since the input is very casual ("안녕?"), a casual reply is appropriate. * *Choice:* "안녕하세요!" or "안녕!" (The exclamation mark adds energy.)
4. **Add conversational momentum (The "How are you?" part):** A simple greeting usually prompts a follow-up question to keep the conversation going. * Korean equivalent: "잘 지내셨어요?" (Jal jinaesyeosseoyo? - How have you been?) or "뭐 하세요?" (Mwo haseyo? - What are you doing?). * A polite, common opening is: "네, 안녕하세요! 잘 지내셨어요?" (Yes, hello! Have you been well?)
5. **Select the best options (Offering variety):** Depending on the desired tone (casual, polite, enthusiastic), multiple responses can be offered.
* **Option 1 (Standard/Friendly):** A standard greeting and question. (The safest bet). * **Option 2 (Casual/Warm):** Keep it very relaxed. * **Option 3 (Enthusiastic/Ready to chat):** Expressing excitement.
6. **Final Polish (Selecting the Korean output):**
* *Initial Greeting:* 안녕하세요! * *Follow-up:* 저도 잘 지내고 있어요. 😊 (I'm doing well too.) * *Question back:* 무슨 일로 오셨나요? / 잘 지내셨어요? (What brings you here? / Have you been well?)
7. **Construct the final Korean and English explanation.** (This results in the provided good response.) ...done thinking.
안녕하세요! 😊
(Annyeonghaseyo! / Hello!)
저는 잘 지내고 있어요. 혹시 무슨 일로 오셨나요? 😊
**[English translation and explanation:]**
* **안녕하세요! (Annyeonghaseyo!)**: Hello! (This is the standard, polite way to respond.) * **저도 잘 지내고 있어요. (Jeodo jal jinaego isseoyo.)**: I'm doing well too. * **무슨 일로 오셨나요? (Museun illo osyeonnayo?)**: What brings you here? / What are you doing? (This is a natural way to prompt the other person to start the topic.)
토큰화 및 입력 임베딩 문자, 숫자, 구두점과 같은 글자 단위는 인간이 언어를 표현하는 기본 단위이지만, AI 모델이 사용하는 언어의 최소 단위는 토큰(token)입니다. 각 토큰은 고유한 ID 번호를 부여받으며, LLM은 단어 자체나 토큰 자체가 아니라 이 ID 번호를 통해 어휘 “데이터베이스”를 탐색합니다. 이러한 언어의 토큰화는 텍스트를 처리하는 데 필요한 계산량을 크게 줄여줍니다.
트랜스포머의 어텐션 레이어에 입력할 쿼리 및 키 벡터를 생성하기 위해, 모델은 각 토큰에 대한 초기 문맥 없는 벡터 임베딩이 필요합니다. 이러한 초기 토큰 임베딩은 학습 중에 새롭게 학습되거나, 사전학습된 단어 임베딩 모델에서 가져올 수 있습니다.
위치 인코딩 단어의 순서와 위치는 그 의미론적 의미에 큰 영향을 미칠 수 있습니다. RNN의 직렬적 구조는 각 토큰의 위치 정보를 자연스럽게 보존하지만, 트랜스포머 모델은 어텐션 메커니즘이 이를 고려할 수 있도록 명시적으로 위치 정보를 추가해야 합니다.
위치 인코딩을 사용하면 모델은 입력이 어텐션 메커니즘에 들어가기 전에 상대적 위치에서 파생된 각 토큰의 임베딩에 값 벡터를 추가합니다. 두 토큰이 가까울수록 포지션 벡터는 더 유사해지고, 그에 따라 위치 정보 추가로 인해 정렬 점수가 더 높아집니다. 이렇게 하여 모델은 인접한 토큰에 더 많은 주의를 기울이도록 학습하게 됩니다.
C:\>ollama list NAME ID SIZE MODIFIED llama3.2:latest a80c4f17acd5 2.0 GB 40 hours ago gemma3:1b 8648f39daa8f 815 MB 40 hours ago llama3.1:8b 46e0c10c039e 4.9 GB 40 hours ago gemma4:e2b 7fbdbf8f5e45 7.2 GB 40 hours ago llama3.2:3b a80c4f17acd5 2.0 GB 40 hours ago
C:\Users\minimonk\.ollama\models\blobs>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 6A30-5BAD
C:\Users\minimonk\.ollama\models\blobs 디렉터리
2026-04-10 오후 11:33 <DIR> . 2026-04-10 오후 10:51 <DIR> .. 2026-04-10 오후 11:11 12,320 sha256-0ba8f0e314b4264dfd19df045cde9d4c394a52474bf92ed6a3de22a4ca31a177 2026-04-10 오후 11:33 492 sha256-120007c81bf8b4eb54e896a4a3e5ff9949f124b0ea42295277c8523f7fa9c7f6 2026-04-10 오후 11:33 77 sha256-3116c52250752e00dd06b16382e952bd33c34fd79fc4fe3a5d2c77cf7de1b14b 2026-04-10 오후 11:07 561 sha256-34bb5ab01051a11372a91f95f3fbbc51173eed8e7f13ec395b9ae9b8bd0e242b 2026-04-10 오후 11:11 487 sha256-455f34728c9b5dd3376378bfb809ee166c145b0b4c1f1a6feca069055066ef9a 2026-04-10 오후 11:10 7,162,394,016 sha256-4e30e2665218745ef463f722c0bf86be0cab6ee676320f1cfadf91e989107448 2026-04-10 오후 11:10 42 sha256-56380ca2ab89f1f68c283f4d50863c0bcab52ae3f1b9a88e4ab5617b176f71a3 2026-04-10 오후 11:07 96 sha256-56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb 2026-04-10 오후 11:11 4,920,738,944 sha256-667b0c1932bc6ffc593ed1d03f895bf2dc8dc6df21db3042284a6f4416b06a29 2026-04-10 오후 11:10 11,355 sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2 2026-04-10 오후 11:33 815,310,432 sha256-7cd4618c1faf8b7233c6c906dac1694b6a47684b37b8895d470ac688520b9c01 2026-04-10 오후 11:11 1,481 sha256-948af2743fc78a328dcb3b0f5a31b3d75f415840fdb699e8b1235978392ecf85 2026-04-10 오후 11:07 1,429 sha256-966de95ca8a62200913e3f8bfbf84c8494536f1b94b49166851e76644e966396 2026-04-10 오후 11:07 6,016 sha256-a70ff7e570d97baaf4e62ac6e6ad9975e04caa6d900d3742d37698494479e0cd 2026-04-10 오후 11:10 473 sha256-c6bc3775a3fa9935ce4a3ccd7abc59e936c3de9308d2cc090516012f43ed9c07 2026-04-10 오후 11:33 8,432 sha256-dd084c7d92a3c1c14cc09ae77153b903fd2024b64a100a0cc8ec9316063d2dbc 2026-04-10 오후 11:06 2,019,377,376 sha256-dde5aa3fc5ffc17176b5e8bdc82f587b24b2678c6c66101bf7da77af9f7ccdff 2026-04-10 오후 11:33 358 sha256-e0a42594d802e5d31cdc786deb4823edb8adff66094d49de8fffe976d753e348 2026-04-10 오후 11:07 7,711 sha256-fcc5a6bec9daf9b561a68827b67ab6088e1dba9d1fa2a50d7bbcc8384e0a265d 19개 파일 14,917,872,098 바이트 2개 디렉터리 353,433,444,352 바이트 남음
C:\Users\minimonk\.ollama\models\manifests\registry.ollama.ai\library>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 6A30-5BAD
2026-04-10 오후 11:33 <DIR> . 2026-04-10 오후 11:07 <DIR> .. 2026-04-10 오후 11:33 <DIR> gemma3 2026-04-10 오후 11:10 <DIR> gemma4 2026-04-10 오후 11:11 <DIR> llama3.1 2026-04-10 오후 11:36 <DIR> llama3.2 0개 파일 0 바이트 6개 디렉터리 353,433,411,584 바이트 남음
C:\Users\minimonk\.ollama\models\manifests\registry.ollama.ai\library\llama3.2>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 6A30-5BAD
2026-04-10 오후 11:36 . 2026-04-10 오후 11:33 .. 2026-04-10 오후 11:07 1,005 3b 2026-04-10 오후 11:36 1,005 latest 2개 파일 2,010 바이트 2개 디렉터리 353,430,896,640 바이트 남음
cli 도움말. show는 모델정보 보기 run은 실행하는거.. stop 하면 그러면 날릴 수 있나?
C:\>ollama --help Large language model runner
Usage: ollama [flags] ollama [command]
Available Commands: serve Start Ollama create Create a model show Show information for a model run Run a model stop Stop a running model pull Pull a model from a registry push Push a model to a registry signin Sign in to ollama.com signout Sign out from ollama.com list List models ps List running models cp Copy a model rm Remove a model launch Launch the Ollama menu or an integration help Help about any command
Flags: -h, --help help for ollama --nowordwrap Don't wrap words to the next line automatically --verbose Show timings for response -v, --version Show version information
Use "ollama [command] --help" for more information about a command.
cli 내부 명령어는 faq에 인터넷 검색으로 찾은 정도가 전부인거 같은데 내부에서 보면 제법 먼가 있긴하다.
How can I specify the context window size? By default, Ollama uses a context window size of 4096 tokens. This can be overridden with the OLLAMA_CONTEXT_LENGTH environment variable. For example, to set the default context window to 8K, use: OLLAMA_CONTEXT_LENGTH=8192 ollama serve To change this when using ollama run, use /set parameter: /set parameter num_ctx 4096
C:\>ollama run gemma3:1b >>> /set Available Commands: /set parameter ... Set a parameter /set system <string> Set system message /set history Enable history /set nohistory Disable history /set wordwrap Enable wordwrap /set nowordwrap Disable wordwrap /set format json Enable JSON mode /set noformat Disable formatting /set verbose Show LLM stats /set quiet Disable LLM stats /set think Enable thinking /set nothink Disable thinking
>>> /set parameter Available Parameters: /set parameter seed <int> Random number seed /set parameter num_predict <int> Max number of tokens to predict /set parameter top_k <int> Pick from top k num of tokens /set parameter top_p <float> Pick token based on sum of probabilities /set parameter min_p <float> Pick token based on top token probability * min_p /set parameter num_ctx <int> Set the context size /set parameter temperature <float> Set creativity level /set parameter repeat_penalty <float> How strongly to penalize repetitions /set parameter repeat_last_n <int> Set how far back to look for repetitions /set parameter num_gpu <int> The number of layers to send to the GPU /set parameter stop <string> <string> ... Set the stop parameters