SSD Nodes Learn Hosting plans →
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-31

Jinsi ya kuweka Ollama model kwenye RAM daima

Ollama hufuta model baada ya dakika 5 za kutofanya kazi, jambo linalochelewesha majibu. Jifunze kusanidi parameter ya keep_alive ili model ibaki kwenye kumbukumbu hata baada ya reboot.

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 huifuta. Ombi linalofuata lazima lisome uzito (weights) kutoka kwenye diski na kuyapanga upya kwenye RAM au VRAM, kwa hivyo mfumo husimama kabla ya token ya kwanza kufika. Hii ndiyo sababu UI ya gumzo au wakala wa uandishi wa msimbo huonekana kuwa wa haraka, kisha hunyamaza kwa muda, na kisha huonekana kuwa wa polepole kwenye ujumbe unaofuata. Hakuna kilichoharibika. Kipima muda cha kutofanya kazi (idle timer) kimeisha.

Kipima muda hiki kinaitwa keep_alive. Ni kwa kila model, na huanza upya kila wakati ombi linapokamilika. Model inayojibu ombi kwa sasa haiwezi kuondolewa kamwe, kwa sababu seva huondoa tu model ambayo haina ombi linaloendelea. Kufikia Agosti 2026, chaguo-msingi ni dakika tano, na linahusu kila model ambayo seva hii hupakia.

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 kuanzisha upya (restart). Mwongozo huu unadhani kuwa Ollama tayari inaendeshwa kama huduma. Ikiwa sivyo, anza na kusakinisha Ollama kwenye VPS kisha urudi hapa.

Ni modeli zipi zinazokaa kwenye kumbukumbu sasa hivi, na zinaisha muda wake 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 kuwa modeli haikutoshea kwenye VRAM, kwa hivyo sehemu yake inaendeshwa kwenye processor na uzalishaji (generation) huwa wa polepole.

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

Seti ya safu wima imebadilika kati ya matoleo, kwa hivyo soma kichwa cha habari badala ya kuhesabu sehemu kwenye script. Kwa chochote kinachojiendesha, uliza 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 kupakia upya

Usikisie gharama hii. Ollama huripoti muda wa kupakia 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 uisome kwa sekunde. Ombi la pili hufanyika wakati model ikiwa tayari imeshapakiwa kwenye kumbukumbu na huripoti namba ndogo zaidi. Tofauti kati ya namba hizo mbili ndiyo gharama ambayo kila mtumiaji hulipa pindi muda wa kusubiri (timer) unapoisha, na ndiyo sababu kuu ya kubadilisha keep_alive. Sehemu kubwa ya tofauti hiyo inatokana na kusoma diski, kwa hivyo ikiwa umehamisha saraka ya model kwenye volume ya pili, kasi ya volume hiyo ndiyo huweka kikomo cha chini cha kasi ya kila upakiaji wa baridi (cold load). 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 baada ya ombi moja

Tuma keep_alive pamoja na ombi hilo. Inatumika kwa 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"
  • nambari ya kawaida, inayosomeka kama sekunde: 3600
  • thamani hasi, -1 au "-1m", ikimaanisha hakuna muda wa kusubiri (idle timeout) kabisa
  • 0, ikimaanisha ondoa modeli kwenye kumbukumbu mara tu ombi hili linapokamilika

Thamani iliyo 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 kutoa matokeo yoyote. 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 ukitumia OLLAMA_KEEP_ALIVE

Seva husoma OLLAMA_KEEP_ALIVE wakati wa kuanza na kuitumia kwa kila model ambayo haina thamani yake yenyewe. Inakubali maumbo sawa na sehemu ya ombi, kwa hivyo 30m, 3600 na -1 zote hufanya kazi.

Changamoto ni mazingira (environment) ya nani yanayopaswa kutumika. Kuendesha export OLLAMA_KEEP_ALIVE=30m katika kipindi chako cha SSH hakufanyi kazi yoyote, kwa sababu usakinishaji uliopakiwa huendesha seva kama huduma ya systemd chini ya mtumiaji wake mwenyewe na mazingira yake yenyewe. Shell yako ya kuingia na huduma hiyo haikutani kamwe. Hii ndiyo sababu ya kawaida zaidi inayofanya mpangilio huu kuonekana kama umepuuzwa.

Ifanya iendelee kufanya kazi baada ya kuanzisha upya seva 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 unaobadilisha 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 hiyo itatumia wakati wa kufanya kazi. Ikiwa OLLAMA_KEEP_ALIVE=30m haipo kwenye mstari huo, basi drop-in haikufanya kazi, na sababu mara nyingi ni kukosekana kwa kichwa cha habari (header) cha [Service] au mistari iliyoandikwa chini ya alama husika. Kuanzisha upya huduma kutafuta kila model iliyokuwa imepakiwa kwenye kumbukumbu, kwa hivyo ombi linalofuata litakuwa la kwanza (cold load). Iweke tayari kwa kutumia amri ya preload iliyo hapo juu.

Gharama za kuweka model kwenye kumbukumbu (resident)

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 kwa ajili ya kuiendesha kwenye VPS ya CPU pekee ni muhimu kuzipitia kabla ya kuamua kuifanya 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 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 itaua 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 kuzikosa. Context length ndefu huhifadhi KV cache kubwa (key value cache, hali ya attention kwa kila token ambayo model huishikilia wakati wa kuzalisha), na cache hiyo ni sehemu ya ukubwa wa resident. Ukubwa wake hutokana na num_ctx, kwa hivyo kuongeza context window huongeza kumbukumbu ambayo model iliyo resident huishikilia kwa muda wote wa idle, si wakati inajibu pekee. OLLAMA_NUM_PARALLEL zaidi ya 1 huhifadhi cache hiyo mara moja kwa kila parallel slot. Ikiwa unapanga kuhudumia watu kadhaa kutoka kwa model moja, pima kumbukumbu kwa ajili ya slots, si kwa ajili ya uzito (weights) 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 unapoacha kufanya kazi.

Ondoa model mara moja

ollama stop qwen3:8b

Amri hii haitoi matokeo yoyote, na model hiyo 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 linalorejeshwa 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.

Kuendesha modeli zaidi ya 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 kupata nafasi. Huchagua ile isiyo na ombi linaloendelea, na inaweza kuondoa modeli ambayo muda wake wa kusubiri (timer) haujaisha, 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 (weights) dhidi ya ombi la modeli nyingine.

Uamuzi huo huandikwa kwenye logi katika 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 kupata nafasi, ukiwa karibu na ombi lililosababisha hatua hiyo, unakuonyesha kuwa modeli hizi mbili haziwezi kutoshea pamoja kwenye mashine hii. Suluhisho ni kupunguza idadi ya modeli kwenye seva hii, au kuweka muda mrefu wa kusubiri kwa modeli 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 kinachopakiwa, 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 ambacho Ollama huanza baada ya ombi kukamilika. Muda huo unapoisha, seva huondoa uzito (weights) wa model, hivyo ombi linalofuata hulazimika kuipakia upya kutoka kwenye diski, na upakiaji huo ndio unasababisha kusubiri unakoona. Ongeza muda huo kwa ombi moja kwa kutuma "keep_alive": "30m" ndani ya JSON body, au kwa seva nzima kwa kutumia kigezo cha mazingira 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 kwenye safu ya UNTIL. Hii huondoa kipima muda cha kutofanya kazi na hakuna kingine kinachobadilika. Ikiwa model nyingine itaombwa na kumbukumbu haitoshi, kiratibu (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 hakifiki kwenye systemd service. 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, ambayo hupuuza chaguo-msingi la seva.

Ninawezaje kufuta 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 litakuja na "done_reason": "unload". Thibitisha kwa ollama ps, ambayo haipaswi kuorodhesha model hiyo tena.