SSD Nodes Learn 🎉 VPS kutoka $5.50/mwezi
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-13

Jinsi ya kuweka Ollama model kwenye RAM daima

Ollama huondoa model baada ya dakika 5 za kutofanya kazi. Jifunze kutumia kigezo cha keep_alive kwenye faili ya systemd ili kuzuia kusubiri mzigo wa data kila unapoanza ombi.

Kwa nini Ollama huondoa model kwenye kumbukumbu baada ya dakika chache?

Ollama huweka model kwenye kumbukumbu kwa dakika tano baada ya ombi la mwisho, kisha huiondoa. Ombi linalofuata lazima lisome uzito (weights) kutoka kwenye diski na kuyapanga upya kwenye RAM au VRAM, hivyo mfumo husimama kabla ya token ya kwanza kufika. Hii ndiyo sababu UI ya gumzo au wakala wa programu huonekana kuwa ya haraka, kisha hutulia kwa muda, na baadaye huonekana kuwa ya polepole kwenye ujumbe unaofuata. Hakuna kilichoharibika. Kipima muda cha kutofanya kazi (idle timer) kimekwisha.

Kipima muda hiki kinaitwa keep_alive. Hufanya kazi kwa kila model, na huanza upya kila wakati ombi linapokamilika. Model inayojibu ombi kwa sasa haiondolewi kamwe, kwa sababu seva huondoa tu model ambayo haina ombi linaloendelea. Kufikia Agosti 2026, muda chaguo-msingi ni dakika tano, na unahusu kila model inayopakiwa na seva hii.

Kuna sehemu mbili za kuweka keep_alive: kwenye ombi binafsi, au kama chaguo-msingi la seva. Faili ya systemd drop-in ndiyo inayofanya chaguo-msingi la seva kudumu baada ya kuanzishwa upya (restart). Mwongozo huu unachukulia kuwa Ollama tayari inaendeshwa kama huduma (service). Ikiwa sivyo, anza na kusakinisha Ollama kwenye VPS kisha urudi hapa.

Ni modeli zipi zinazokaa kwenye kumbukumbu sasa hivi, na zinaisha lini?

ollama ps
NAME        ID              SIZE      PROCESSOR    CONTEXT    UNTIL
qwen3:8b    500a1f067a9f    6.6 GB    100% GPU     4096       4 minutes from now

Pato tupu linamaanisha hakuna kitu kilichopakiwa, kwa hivyo ombi linalofuata litagharamia upakiaji kamili. PROCESSOR inakuonyesha mahali uzito (weights) ulipohifadhiwa. 100% GPU na 100% CPU ni hali zilizo wazi. Mgawanyo kama 25%/75% CPU/GPU unamaanisha modeli haikutoshea kwenye VRAM, kwa hivyo sehemu yake inaendeshwa kwenye processor na uzalishaji (generation) unakuwa wa polepole.

UNTIL ni kipima muda cha kurudi nyuma, na huchapisha muda wa kulinganisha kama 4 minutes from now. Huchapisha Forever wakati modeli ilipakiwa na keep_alive hasi. Huchapisha Stopping... wakati wa muda mfupi ambapo seva inapakua (unloading) modeli.

Seti ya safuwima imebadilika kati ya matoleo, kwa hivyo soma kichwa cha habari badala ya kuhesabu sehemu kwenye hati (script). Kwa chochote kinachojiendesha chenyewe, tumia API:

curl -s http://localhost:11434/api/ps

Kila ingizo hubeba expires_at, muhuri wa muda kamili (absolute timestamp) kama 2026-08-09T14:38:31.83753Z, na size_vram, sehemu ya modeli hiyo iliyokaa kwenye kumbukumbu ya GPU. size_vram ya 0 inamaanisha modeli inaendeshwa kwenye CPU.

Gharama halisi ya reload

Usikisie gharama hii. Ollama huripoti muda wa kupakia (load time) katika kila jibu, kama load_duration, kwa nanoseconds.

sudo apt install -y jq
ollama stop qwen3:8b
curl -s http://localhost:11434/api/generate -d '{"model": "qwen3:8b", "prompt": "hi", "stream": false}' | jq '{load_duration, total_duration}'
curl -s http://localhost:11434/api/generate -d '{"model": "qwen3:8b", "prompt": "hi", "stream": false}' | jq '{load_duration, total_duration}'

Ombi la kwanza hupakia model, kwa hivyo load_duration yake huwa kubwa. Gawanya kwa 1000000000 ili kusoma muda huo kwa sekunde. Ombi la pili huendeshwa wakati model tayari imeshapakiwa kwenye kumbukumbu na huripoti namba ndogo zaidi. Tofauti kati ya namba hizo mbili ndiyo gharama ambayo kila mtumiaji hulipa pindi muda wa timer unapoisha, na ndiyo sababu kuu ya kubadilisha keep_alive. Kwa kasi ya uzalishaji (generation speed) kabla na baada ya pause hiyo, angalia jinsi ya kupima tokens kwa sekunde kwenye seva yako.

Kuweka modeli ya Ollama kwenye kumbukumbu kwa ombi moja

Tuma keep_alive pamoja na ombi lako. Hii inahusu modeli hiyo kuanzia wakati ombi linapokamilika.

curl -s http://localhost:11434/api/chat -d '{
  "model": "qwen3:8b",
  "messages": [{"role": "user", "content": "hello"}],
  "keep_alive": "30m"
}'

Aina nne za thamani zinakubalika:

  • kamba ya muda (duration string): "30m", "24h", "90s"
  • namba ya kawaida, inayosomeka kama sekunde: 3600
  • thamani hasi, -1 au "-1m", ikimaanisha hakuna muda wa kusubiri (idle timeout) hata kidogo
  • 0, ikimaanisha ondoa modeli kwenye kumbukumbu mara tu ombi hili linapokamilika

Thamani iliyopo kwenye ombi inabatilisha chaguo-msingi la seva, katika pande zote mbili. Hili ni muhimu zaidi kuliko inavyosikika: mteja anayetuma keep_alive yake mwenyewe anashinda chochote ulichosanidi kwenye seva.

Unaweza pia kupakia modeli bila kuzalisha chochote. Tuma jina la modeli pekee. Seva huipakia na kurejesha jibu tupu lenye "done": true.

curl -s http://localhost:11434/api/generate -d '{"model": "qwen3:8b", "keep_alive": "30m"}'

Hiyo ndiyo amri ya kutekeleza baada ya kuwasha upya seva (reboot), au baada ya kupakua modeli mpya, ili ombi la kwanza la mtumiaji halisi lisicheleweshwe na muda wa kupakia. CLI hufanya kazi hiyo hiyo kwa kutumia flag:

ollama run --keepalive 30m qwen3:8b "hello"

Iweke ikiwa imepakiwa kwa chaguo-msingi kwa kutumia OLLAMA_KEEP_ALIVE

Seva husoma OLLAMA_KEEP_ALIVE wakati wa kuanza na kuitumia kwa kila model ambayo haina thamani yake yenyewe. Inakubali aina zilezile za thamani kama uwanja wa ombi, kwa hivyo 30m, 3600 na -1 zote hufanya kazi.

Changamoto ni mazingira (environment) ambayo inapaswa kuwemo. Kuendesha export OLLAMA_KEEP_ALIVE=30m katika kipindi chako cha SSH hakufanyi lolote, kwa sababu usakinishaji uliopakiwa huendesha seva kama huduma ya systemd chini ya mtumiaji wake na mazingira yake. Shell yako ya kuingia na huduma hiyo hazikutani kamwe. Hii ndiyo sababu ya kawaida zaidi inayofanya mpangilio huo kuonekana kama umepuuzwa.

Ifanya huduma iendelee kufanya kazi baada ya kuanzishwa upya kwa kutumia systemd drop-in

sudo systemctl edit ollama.service

Kihariri kitafunguka kikiwa na alama mbili za maoni. Andika kati ya alama hizo: systemd hupuuza chochote utakachoandika chini ya alama ya pili.

[Service]
Environment="OLLAMA_KEEP_ALIVE=30m"

Kuhifadhi faili kutaandika /etc/systemd/system/ollama.service.d/override.conf. Hii ni drop-in badala ya kuhariri unit file iliyokuja na programu, kwa hivyo uboreshaji wa kifurushi cha Ollama unaochukua nafasi ya ollama.service utaacha mipangilio yako ikiwa salama. Ikiwa drop-ins na unit files ni ngeni kwako, mwongozo wa systemd service na timer unaelezea jinsi zinavyofanya kazi.

sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=Environment

Amri ya mwisho inaonyesha mazingira (environment) ambayo huduma itatumia wakati wa kufanya kazi. Ikiwa OLLAMA_KEEP_ALIVE=30m haipo kwenye mstari huo, drop-in haikufanya kazi, na sababu mara nyingi ni kukosekana kwa kichwa cha habari cha [Service] au mistari iliyoandikwa chini ya alama. Kuanzisha upya huduma kutaondoa kila model iliyopakiwa kwenye kumbukumbu, kwa hivyo ombi linalofuata litakuwa na muda mrefu wa kuanza (cold load). Iweke tayari kwa kutumia amri ya preload iliyo hapo juu.

Gharama za kuweka model kwenye kumbukumbu

Safu ya SIZE katika ollama ps ni kumbukumbu inayoshikiliwa kwa muda wote wa idle window, si wakati wa ombi pekee. Model ya 8B yenye 4-bit quantisation hutumia takriban 5 hadi 6 GB. Model ya 27B ni jambo tofauti, na hesabu za kumbukumbu za kuendesha model kwenye VPS ya CPU pekee ni muhimu kuzipitia kabla ya kuamua kuiweka iwe resident. Weka keep_alive kuwa -1 na utakuwa umeamua kuwa model hiyo ina kipaumbele kuliko kila kitu kingine kwenye seva, moja kwa moja. Kwenye VPS ndogo, hii ni biashara ya moja kwa moja dhidi ya database yako, web app yako, na kazi zako za build.

Fuatilia namba halisi badala ya kuamini makadirio. Endesha amri hii wakati model imepakiwa, kisha uifanye tena baada ya ollama stop:

free -h

Safu ya available ni kumbukumbu ambayo kernel bado inaweza kuipa mchakato mpya. Kwenye seva yenye NVIDIA GPU, nvidia-smi huonyesha hali hiyo hiyo katika VRAM. Ikiwa seva itaishiwa na kumbukumbu, kernel huua mchakato ili kurejesha nafasi:

sudo dmesg -T | grep -i "out of memory"

Mstari unaotaja ollama unamaanisha kuwa seva ya model ndiyo iliyokuwa mwathiriwa. Mstari unaotaja database yako unamaanisha kuwa model imeshinda na kitu unachokijali kimepoteza. Matokeo yote mawili yanatokana na uamuzi mmoja: muda mrefu wa keep-alive kwenye seva isiyo na nafasi ya ziada.

Gharama mbili hapa ni rahisi kuzisahau. Context length ndefu huhifadhi KV cache kubwa (key value cache, hali ya attention kwa kila token ambayo model huihifadhi wakati wa kuzalisha), na cache hiyo ni sehemu ya ukubwa wa resident size. OLLAMA_NUM_PARALLEL inayozidi 1 huhifadhi cache hiyo mara moja kwa kila parallel slot. Ikiwa unapanga kuhudumia watu kadhaa kutoka kwa model moja, kadiria kumbukumbu kwa ajili ya slots, si kwa ajili ya uzito wa model pekee.

Chaguo-msingi la busara: model moja kwenye seva yenye nafasi ya ziada inaweza kutumia -1. Seva inayoshirikiwa inapaswa kutumia window inayofunika mapengo kati ya maombi yako, kama vile 30m, ili kumbukumbu irejee unapomaliza kufanya kazi.

Ondoa model mara moja

ollama stop qwen3:8b

Inarejesha jibu bila pato lolote, na model hupotea kutoka ollama ps. Jina ambalo halijapakiwa hutoa couldn't find model "qwen3:8b" to stop. Fomu ya API ni ombi lisilo na prompt na keep_alive ikiwa imewekwa kuwa 0:

curl -s http://localhost:11434/api/chat -d '{"model": "qwen3:8b", "messages": [], "keep_alive": 0}'

Jibu hubeba "done_reason": "unload". Tumia njia hii badala ya kuanzisha upya huduma. systemctl restart ollama huachia kumbukumbu pia, lakini huondoa kila model nyingine iliyopakiwa na kukatisha ombi lolote lililokuwa likiendelea.

Kutumia zaidi ya modeli moja kwenye seva moja

OLLAMA_MAX_LOADED_MODELS huweka kikomo cha idadi ya modeli zinazoweza kubaki kwenye kumbukumbu kwa wakati mmoja, na kuanzia Agosti 2026 chaguo-msingi ni tatu kwa kila GPU, au tatu kwenye seva inayotumia CPU pekee. Kikomo hiki huhesabu modeli, ingawa kumbukumbu ndiyo kikwazo halisi, hivyo modeli ya pili kubwa inaweza kukataliwa nafasi kabla hata hujafikisha idadi ya tatu.

Wakati modeli mpya inapoombwa na hakuna kumbukumbu ya kutosha, scheduler huondoa moja ya modeli zilizopo ili kutengeneza nafasi. Inapendelea kuondoa ile isiyo na ombi linaloendelea, na itafukuza modeli ambayo kipima muda chake hakijaisha, ikiwemo modeli iliyopakiwa kwa kutumia -1. Kwa hivyo, thamani hasi ya keep_alive inamaanisha hakuna muda wa kusubiri (idle timeout). Hii haifungi (pin) uzito wa modeli dhidi ya ombi la modeli nyingine.

Uamuzi huo hurekodiwa kwenye kiwango cha debug. Ongeza mstari wa pili wa Environment="OLLAMA_DEBUG=1" kwenye faili hiyo hiyo ya drop-in, anzisha upya huduma, na ufuatilie:

sudo journalctl -u ollama -f

Mstari unaohusu kuondoa runner ili kutengeneza nafasi, ukiwa karibu na ombi lililosababisha hatua hiyo, unakuonyesha kuwa modeli hizi mbili hazitoshei pamoja kwenye mashine hii. Suluhisho ni kupunguza idadi ya modeli kwenye seva hii, au kuweka muda mrefu wa kusubiri kwa ile inayohitaji kujibu haraka na 0 kwa ile unayoiita mara chache.

Mwongozo unaodumu zaidi ya toleo lijalo

Ollama hutoa matoleo mapya mara kwa mara na mipangilio yake chaguo-msingi hubadilika, kwa hivyo kagua toleo lililo mbele yako badala ya kukariri namba:

ollama --version
ollama serve --help

ollama serve --help huorodhesha vigezo vya mazingira (environment variables) ambavyo toleo hilo husoma, ikiwemo OLLAMA_KEEP_ALIVE. Sheria mbili zimebaki thabiti katika matoleo yote na ni salama kuzitegemea. Thamani iliyopo kwenye ombi (request) inashinda thamani chaguo-msingi ya seva. Na ollama ps ndiyo ukweli kuhusu kile kilichopakiwa, bila kujali kile ambacho faili ya usanidi inasema kinapaswa kuwa.

Ikiwa kihariri au wakala (agent) ndiyo inayoendesha seva yako, kagua kile ambacho mteja huyo hutuma kabla ya kuilaumu seva. Kuelekeza wakala wa usimbaji kwenye seva yako ya Ollama inaelezea mahali ambapo mipangilio hiyo ya maombi inapatikana.

FAQ

Kwa nini Ollama huondoa model yangu kwenye kumbukumbu baada ya dakika 5?

Dakika tano ndiyo keep_alive chaguo-msingi, kipima muda cha kutofanya kazi (idle timer) ambacho Ollama huanza baada ya ombi kukamilika. Muda huo unapoisha, seva huachia uzito (weights) wa model, hivyo ombi linalofuata hulazimika kuipakia upya kutoka kwenye diski, na upakiaji huo ndio unaosababisha kusita unakoona. Ongeza muda huo kwa ombi moja kwa kutuma "keep_alive": "30m" kwenye JSON body, au kwa seva nzima kwa kutumia kigezo cha mazingira (environment variable) cha OLLAMA_KEEP_ALIVE.

Ninawezaje kuweka model ya Ollama kwenye kumbukumbu (memory) daima?

Tumia thamani hasi: "keep_alive": -1 kwenye ombi, au OLLAMA_KEEP_ALIVE=-1 kwa seva. ollama ps kisha itaonyesha Forever katika safu ya UNTIL. Hii huondoa kipima muda cha kutofanya kazi na hakuna kingine kinachobadilika. Ikiwa model nyingine itaombwa na kumbukumbu ikawa ndogo, kipanga ratiba (scheduler) bado kitaondoa model hii ili kupata nafasi.

Kwa nini OLLAMA_KEEP_ALIVE inapuzwa?

Angalia mahali ulipoiweka. Tekeleza systemctl show ollama --property=Environment, na ikiwa kigezo hicho hakipo kwenye matokeo hayo, seva haikukiona, kwa sababu kigezo kilichosafirishwa (exported) kwenye shell yako hakifikii huduma ya systemd. Kiweke kwa kutumia sudo systemctl edit ollama.service, kisha tekeleza sudo systemctl daemon-reload na sudo systemctl restart ollama. Sababu nyingine ni mteja (client) anayetuma keep_alive yake mwenyewe kwenye ombi, jambo ambalo hupuuza chaguo-msingi la seva.

Ninawezaje kuachia kumbukumbu bila kuanzisha upya Ollama?

ollama stop qwen3:8b huondoa model hiyo moja mara moja na kuacha seva na kila model nyingine iliyopakiwa ikiendelea kufanya kazi. Kupitia API, tuma ombi lisilo na prompt na "keep_alive": 0, na jibu litarejea likiwa na "done_reason": "unload". Thibitisha kwa ollama ps, ambayo haipaswi kuorodhesha model hiyo tena.