Perbezaan ollama pull dan ollama run serta lokasi fail
Ketahui beza antara ollama pull dan ollama run. Ketahui lokasi fail model disimpan, punca cakera VPS penuh, serta cara memindahkan direktori model ke storan lain dengan mudah.
Perbezaan antara ollama pull dan ollama run
ollama pull memuat turun model dan berhenti. ollama run memuat turun model hanya jika ia tiada, kemudian memuatkannya ke dalam memori dan membuka sesi sembang interaktif. Proses muat turun adalah sama dan fail disimpan di lokasi yang sama. Hanya run yang meneruskan proses selepas itu.
Perbezaan tunggal itu menentukan arahan mana yang sesuai digunakan dalam skrip dan mana yang sesuai ditaip pada papan kekunci.
ollama pull gemma4
ollama run gemma4
ollama run gemma4 "Reply with one word: ready"Baris pertama mengambil model dan keluar, jadi ia selamat digunakan dalam penyediaan (provisioning) dan unit systemd. Baris kedua membuka sesi sembang; taip /bye atau tekan Ctrl+D untuk keluar. Baris ketiga menghantar satu prompt, mencetak jawapan dan keluar, iaitu bentuk yang diperlukan oleh skrip apabila ia memerlukan jawapan dan bukannya sesi interaktif. Nama model berubah dengan pantas, jadi anggap gemma4 di sini sebagai pemegang tempat (placeholder): ia adalah contoh yang digunakan dalam dokumentasi rasmi Ollama setakat Ogos 2026, dan mana-mana tag daripada pustaka tersebut berkelakuan dengan cara yang sama.
Mengapa ollama run kali pertama kelihatan seperti terhenti
run kali pertama pada VPS baharu boleh kelihatan tidak mengeluarkan sebarang output selama beberapa minit. Tiada apa-apa yang rosak. Prompt sembang tidak boleh muncul sehingga model berada dalam cakera dan dimuatkan ke dalam memori, jadi run sedang melakukan muat turun bersaiz beberapa gigabait sebelum ia mempunyai apa-apa untuk dipaparkan kepada anda.
Dua perkara menyembunyikan proses tersebut. Ollama melukis bar kemajuannya hanya apabila outputnya adalah terminal, jadi run di dalam skrip shell, cron job, langkah CI atau ssh host ollama run ... biasa tidak mencetak apa-apa semasa ia memuat turun. Kemudian, setelah bait data sampai, fail tersebut masih perlu dibaca dari cakera ke dalam RAM sebelum token pertama, dan pada VPS kecil, bacaan tersebut adalah perlahan. Jika pelayan tidak mempunyai memori yang mencukupi untuk model tersebut, kernel akan mula melakukan swapping dan masa menunggu menjadi jauh lebih lama.
Pantau proses tersebut dari sesi kedua daripada membuat andaian:
df -h /
watch -n5 df -h /Ruang bebas yang berkurangan secara berperingkat bermakna muat turun masih berjalan. Ruang bebas yang berhenti berkurangan sementara arahan masih sibuk bermakna muat turun telah selesai dan proses pemuatan ke dalam memori telah bermula.
Inilah sebabnya mengapa anda perlu melakukan pull lebih awal. Pengguna yang menaip ollama run tidak sepatutnya menjadi orang yang menanggung masa menunggu muat turun tersebut.
Muat turun model sebelum diminta oleh sesiapa
Pada pelayan baharu, muat turun skrip yang sama untuk memasang pelayan:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull gemma4Jika anda sedang menyediakan pelayan buat kali pertama, pemasangan penuh Ollama pada VPS merangkumi servis itu sendiri dan pihak yang dibenarkan untuk mengaksesnya. Selepas itu, perkara yang wajar disediakan ialah proses muat turun yang tidak terhenti apabila terminal anda ditutup, kerana muat turun yang terputus di tengah jalan akan menyebabkan stor model anda tidak lengkap.
Jalankan proses ini di dalam tmux, atau berikan kepada systemd sebagai unit one-shot yang berjalan semasa but. Tulis /etc/systemd/system/ollama-pull.service:
[Unit]
Description=Pre-pull Ollama models
Wants=ollama.service network-online.target
After=ollama.service network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'until ollama list >/dev/null 2>&1; do sleep 2; done'
ExecStart=/bin/sh -c 'ollama pull gemma4'
[Install]
WantedBy=multi-user.targetKedua-dua arahan sengaja dijalankan melalui /bin/sh -c. Arahan ExecStart= biasa memerlukan laluan mutlak (absolute path), dan pemasang tidak sentiasa meletakkan binari dalam direktori yang sama, jadi command -v ollama pada pelayan anda sendiri adalah satu-satunya jawapan yang boleh dipercayai. Menggunakan shell akan menggunakan PATH servis dan bukannya laluan yang disalin daripada panduan. ExecStart yang pertama juga penting: After=ollama.service bermaksud unit pelayan telah dimulakan, namun ini tidak bermaksud ia sudah sedia, jadi gelung tersebut menunggu sehingga ollama list memberikan respons sebelum muat turun bermula.
sudo systemctl daemon-reload
sudo systemctl enable --now ollama-pull.service
journalctl -u ollama-pull.serviceJurnal sepatutnya menunjukkan muat turun selesai tanpa ralat, dan ollama list kemudiannya akan memaparkan model tersebut. Untuk memastikan tag yang sentiasa berubah kekal terkini, tambahkan pemasa systemd atau entri cron mingguan yang menjalankan muat turun yang sama. Memuat turun semula tag yang telah berubah akan memuat turun lapisan baharu dan membiarkan lapisan lama tanpa rujukan, dan lapisan tersebut akan dibersihkan pada kali seterusnya pelayan dimulakan.
Apa yang berlaku apabila proses pull terganggu
Setiap lapisan model disimpan di bawah hash kandungan lapisan tersebut. Oleh itu, proses pull yang terganggu tidak dianggap sebagai kerja yang sia-sia: jalankan ollama pull yang sama sekali lagi, dan lapisan yang telah selesai akan dikesan lalu dilangkau, supaya muat turun bersambung pada lapisan yang terputus.
Terdapat satu tindakan yang memusnahkan kemajuan tersebut. Apabila pelayan Ollama bermula, ia akan membuang lapisan tersimpan yang tidak dirujuk oleh mana-mana manifest model, dan lapisan separa yang ditinggalkan oleh proses pull yang terhenti adalah salah satu daripadanya. Jadi, memulakan semula servis sebelum anda mencuba semula akan membuang bahagian yang telah anda muat turun. Cuba semula proses pull dahulu dan mulakan semula servis kemudian. Jika muat turun separa benar-benar perlu dikekalkan selepas proses dimulakan semula, tetapkan OLLAMA_NOPRUNE=1 dalam persekitaran servis, kemudian alih keluar tetapan tersebut, kerana proses pembersihan semasa permulaan itulah yang menghalang lapisan terbiar daripada terkumpul pada cakera.
Jika proses pull terhenti dengan no space left on device, kosongkan ruang storan sebelum mencuba semula. Jika df melaporkan cakera penuh dan du pada direktori model tidak menunjukkan penggunaan ruang tersebut, ruang itu telah digunakan oleh perkara lain, dan sebab mengapa df dan du tidak sepadan perlu dibaca sebelum anda memadamkan apa-apa fail.
Di manakah Ollama menyimpan model pada VPS?
Tanya pelayan anda sendiri dan jangan hanya mempercayai laluan daripada mana-mana panduan, termasuk panduan ini. Lokasinya berbeza antara pemasangan pakej dan kontena, dan ia berubah lagi jika seseorang telah menetapkan OLLAMA_MODELS.
systemctl cat ollama.service
getent passwd ollama
sudo find / -xdev -type d -name blobs 2>/dev/nullsystemctl cat mencetak fail unit bersama-sama dengan setiap drop-in, jadi baris OLLAMA_MODELS yang ditetapkan oleh anda atau yang terbina dalam imej anda akan dipaparkan di situ. Tanpa baris tersebut, storan terletak di bawah direktori home akaun yang menjalankan servis tersebut, dan getent passwd mencetak direktori home itu pada medan keenam yang dipisahkan oleh titik bertindih. find mencari satu sistem fail untuk direktori blobs, iaitu tempat layer sebenarnya ditulis. Gugurkan -xdev jika model mungkin sudah berada pada mount yang berasingan.
Sekarang, buat pengukuran dan baca nombor anda sendiri:
ollama list
df -h /
sudo du -sh /the/directory/you/found
sudo du -h -d1 /the/directory/you/foundStoran ini mempunyai dua bahagian. manifests menyimpan satu fail kecil bagi setiap tag model, dan fail tersebut menyenaraikan layer yang membentuk tag berkenaan. blobs menyimpan layer itu sendiri, setiap satunya dinamakan mengikut hash kandungannya, dan hampir keseluruhan saiz storan berada di situ. Oleh sebab layer dikongsi antara tag, dua model yang dibina berdasarkan weight yang sama masing-masing melaporkan saiznya sendiri dalam ollama list walaupun hanya menduduki ruang tersebut sekali sahaja pada cakera. Oleh itu, jumlah saiz yang disenaraikan boleh menjadi lebih besar daripada apa yang dilaporkan oleh du untuk direktori tersebut.
Fail model memenuhi sistem fail root VPS yang kecil dengan lebih cepat berbanding apa sahaja yang mungkin anda pasang, dan faktor tunggal terbesar yang mempengaruhi saiznya ialah format weight. Memilih antara q4, q8 dan fp16 boleh menjimatkan gigabait bagi setiap model.
Alihkan model ke volum data dengan OLLAMA_MODELS
Jika pelan anda mempunyai cakera kedua atau volum data yang lebih besar, alihkan storan sebelum sistem fail root penuh. Hentikan pelayan terlebih dahulu supaya anda tidak menyalin fail yang sedang ditulis.
sudo systemctl stop ollama
sudo mkdir -p /mnt/data/ollama-models
sudo rsync -a /the/directory/you/found/ /mnt/data/ollama-models/
sudo chown -R ollama:ollama /mnt/data/ollama-models
sudo systemctl edit ollama.servicesystemctl edit membuka editor pada fail drop-in, supaya unit pakej kekal tidak disentuh dan naik taraf pakej tidak akan menimpa perubahan anda. Tambahkan dua baris ini:
[Service]
Environment="OLLAMA_MODELS=/mnt/data/ollama-models"sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=Environment
ollama listsystemctl show sepatutnya memaparkan laluan baharu anda, dan ollama list sepatutnya menunjukkan model yang sama seperti yang ditunjukkan sebelum proses pengalihan. Senarai kosong bermakna pelayan tidak dapat membaca direktori baharu tersebut. Servis berjalan sebagai pengguna ollama, jadi pengguna tersebut memerlukan akses baca dan tulis ke destinasi, yang merupakan fungsi baris chown di atas. Semak journalctl -e -u ollama untuk ralat kebenaran yang menamakan laluan baharu tersebut. Padamkan salinan lama hanya selepas senarai itu betul, kerana pengalihan yang gagal ditambah dengan sumber yang dipadam bermakna anda perlu memuat turun segala-galanya semula.
Pilihan lain ialah mengekalkan laluan asal dan melekapkan (mount) volum data ke atasnya:
echo '/mnt/data/ollama-models /the/directory/you/found none bind 0 0' | sudo tee -a /etc/fstab
sudo mount -a
findmnt /the/directory/you/found
df -h /findmnt yang memaparkan lekap tersebut bermakna bind mount sedang aktif. Bind mount membantu apabila sesuatu yang lain pada mesin tersebut sudah menjangkakan lokasi lalai. Ia mempunyai satu perangkap: fail yang anda salin keluar masih berada di bawah titik lekap pada cakera root, disembunyikan oleh lekap tersebut, jadi ruang tidak akan dikembalikan sehingga anda menyahlekap (unmount) dan memadamkannya. Pemboleh ubah persekitaran adalah pilihan yang lebih mudah untuk dijelaskan kepada sesiapa sahaja yang log masuk seterusnya.
Di mana kontena menyimpannya
Imej rasmi menyimpan model dalam apa jua yang anda lekapkan (mount), bukan dalam mana-mana direktori hos milik pengguna ollama. Perintah jalankan (run command) yang didokumentasikan adalah:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollamaollama sebelum titik bertindih ialah Docker volume bernama, dan /root/.ollama ialah tempat pelayan menulis di dalam kontena. Jadi, du terhadap laluan daripada bahagian sebelumnya tidak menemui apa-apa, kerana tiada apa-apa di sana. Paparkan lokasi dan saiz sebenar:
docker volume inspect ollama
docker system df -v
docker exec -it ollama ollama listBaca medan Mountpoint daripada docker volume inspect, kemudian jalankan sudo du -sh terhadapnya. Untuk meletakkan model pada data volume, gantikan volume bernama dengan direktori hos (-v /mnt/data/ollama:/root/.ollama) dan cipta semula kontena tersebut. Kontena menulis sebagai root, jadi direktori hos tersebut akhirnya dimiliki oleh root. Di bawah Podman tanpa root (rootless), ID dipetakan ke dalam julat subuid pengguna anda, jadi pemilikan hos kelihatan berbeza: menjalankan Ollama di bawah Podman tanpa root merangkumi pemetaan tersebut.
Satu amaran tentang pembersihan. docker volume prune membuang setiap volume yang tidak dirujuk oleh mana-mana kontena. Buang atau cipta semula kontena ollama tanpa volumenya dan tindakan prune kemudiannya akan memadamkan setiap model yang anda muat turun, tanpa cara untuk mendapatkannya semula kecuali memuat turunnya sekali lagi. Baca cara melakukan prune penggunaan cakera Docker pada VPS sebelum menjalankan prune pada kotak yang mengehoskan model.
Alih keluar model dengan ollama rm, bukan dengan rm
ollama list
ollama rm gemma4
ollama list
df -h /ollama rm memadamkan manifes untuk tag tersebut, kemudian memadamkan lapisan yang tidak lagi dirujuk oleh mana-mana manifes. Ruang storan akan dikembalikan sebaik sahaja fail tersebut dinyahpaut, jadi df akan terus berfungsi. Memandangkan lapisan dikongsi bersama, memadamkan satu daripada dua tag yang berkait rapat mungkin membebaskan ruang yang jauh lebih kecil daripada saiz yang dipaparkan oleh ollama list di sebelahnya. Ini adalah kelakuan yang betul, bukan pemadaman yang gagal.
Memadamkan fail secara manual akan merosakkan pasangan tersebut. Jika anda memadamkan blob dengan rm, manifes masih menyenaraikannya, jadi ollama list akan terus memaparkan model tersebut dan sebarang percubaan untuk menggunakannya akan gagal apabila lapisan yang hilang itu dibaca. Jika anda memadamkan manifes secara manual, lapisannya akan kekal pada cakera tanpa sebarang rujukan, sekali gus mengambil ruang yang tidak akan dilaporkan oleh mana-mana arahan Ollama kepada anda. Jika anda telah melakukannya, ollama rm pada tag tersebut akan membersihkan entri yang tertinggal, dan memulakan semula pelayan akan membersihkan lapisan yang tidak dirujuk oleh apa-apa.
Satu perbezaan terakhir, kerana kedua-duanya sering dikelirukan. ollama rm berkaitan dengan cakera. ollama stop gemma4 memunggah model daripada memori dan tidak membebaskan sebarang ruang cakera. Berapa lama model kekal dalam RAM selepas muat turun selesai adalah tetapan yang berasingan, dan mengekalkan model dimuatkan dan bukannya memuat semula pada setiap permintaan membincangkan perkara ini.
FAQ
Apakah perbezaan antara ollama pull dan ollama run?
ollama pull memuat turun model ke cakera dan kemudian berhenti. ollama run menyemak sama ada model sudah tersedia pada cakera, memuat turunnya jika belum, memuatkannya ke dalam memori, dan kemudian membuka sesi sembang interaktif. Kedua-duanya menulis fail yang sama ke direktori yang sama. Gunakan pull dalam proses penyediaan (provisioning) dan skrip, manakala gunakan run apabila pengguna sedang menggunakan papan kekunci. ollama run <model> "your prompt" menghantar satu prompt dan berhenti, yang merupakan bentuk boleh skrip bagi run.
Mengapakah ollama run pertama saya kelihatan tergantung?
Ia sedang memuat turun. Prompt sembang tidak akan muncul sehingga model berada pada cakera dan dimuatkan ke dalam memori, dan saiz model adalah beberapa gigabait. Ollama hanya memaparkan bar kemajuan apabila output adalah terminal, jadi run di dalam skrip, cron job atau ssh host ollama run ... tidak akan menunjukkan apa-apa semasa ia berfungsi. Buka sesi kedua dan jalankan watch -n5 df -h /: ruang bebas yang berkurangan secara berperingkat bermakna muat turun sedang berlangsung. Muat turun model lebih awal untuk mengelakkan tempoh menunggu ini.
Di manakah Ollama menyimpan modelnya?
Lokasi bergantung pada pemasangan, jadi paparkan lokasinya dan jangan membuat andaian. Jalankan systemctl cat ollama.service untuk melihat sama ada OLLAMA_MODELS ditetapkan dalam unit atau drop-in. Jika tidak, storan tersebut berada di bawah direktori home akaun yang menjalankan servis, yang boleh dipaparkan oleh getent passwd ollama. sudo find / -xdev -type d -name blobs 2>/dev/null mencari direktori layer secara terus. Bagi imej kontena, storan berada di dalam volume yang dilekapkan (mounted), dan docker volume inspect ollama memaparkan Mountpoint hosnya.
Bagaimanakah cara saya memindahkan model Ollama ke cakera lain?
Hentikan servis, salin storan ke lokasi baharu dengan rsync -a, berikan hak milik direktori kepada akaun servis dengan sudo chown -R ollama:ollama <directory>, kemudian jalankan sudo systemctl edit ollama.service dan tambah Environment="OLLAMA_MODELS=<directory>" di bawah baris [Service]. Muat semula dengan sudo systemctl daemon-reload dan mulakan semula servis. Sahkan dengan systemctl show ollama --property=Environment dan ollama list. Senarai kosong hampir selalu bermaksud pengguna ollama tidak mempunyai kebenaran untuk membaca direktori baharu tersebut; journalctl -e -u ollama akan memaparkan laluan tersebut.
Adakah memadam fail model akan mengosongkan ruang?
Memadam fail secara manual akan mengosongkan bait tetapi menyebabkan storan menjadi tidak konsisten. Jika anda memadam blob, manifest masih menyenaraikan model tersebut, jadi ia akan terus muncul dalam ollama list dan gagal apabila digunakan. Jika anda memadam manifest, layer-nya akan kekal pada cakera tanpa sebarang rujukan. Gunakan ollama rm <model>, yang memadam manifest dan kemudian memadam layer yang tidak diperlukan oleh model lain. Jika fail telah dipadam secara manual, jalankan ollama rm pada tag tersebut untuk membersihkan entri, kemudian mulakan semula pelayan, yang akan membuang layer yang tidak dirujuk oleh mana-mana manifest.