mirror of
https://github.com/ollama/ollama.git
synced 2026-05-09 01:59:50 -05:00
[GH-ISSUE #9054] Ollama Does Not Utilize Multiple Instances of the Same Model for Parallel Processing #67949
Closed
opened 2026-05-04 12:06:24 -05:00 by GiteaMirror
·
20 comments
No Branch/Tag Specified
main
hoyyeva/opencode-image-modality
hoyyeva/anthropic-renderer-local-image-path
hoyyeva/anthropic-local-image-path
dhiltgen/ci
dhiltgen/llama-runner
parth-launch-codex-app
hoyyeva/anthropic-reference-images-path
parth-anthropic-reference-images-path
brucemacd/download-before-remove
hoyyeva/editor-config-repair
parth-mlx-decode-checkpoints
hoyyeva/fix-codex-model-metadata-warning
hoyyeva/qwen
parth/hide-claude-desktop-till-release
parth-add-claude-code-autoinstall
release_v0.22.0
pdevine/manifest-list
codex/fix-codex-model-metadata-warning
pdevine/addressable-manifest
brucemacd/launch-fetch-reccomended
jmorganca/llama-compat
launch-copilot-cli
hoyyeva/opencode-thinking
release_v0.20.7
parth-auto-save-backup
parth-test
jmorganca/gemma4-audio-replacements
fix-manifest-digest-on-pull
hoyyeva/vscode-improve
brucemacd/install-server-wait
parth/update-claude-docs
brucemac/start-ap-install
pdevine/mlx-update
pdevine/qwen35_vision
drifkin/api-show-fallback
mintlify/image-generation-1773352582
hoyyeva/server-context-length-local-config
jmorganca/faster-reptition-penalties
jmorganca/convert-nemotron
parth-pi-thinking
pdevine/sampling-penalties
jmorganca/fix-create-quantization-memory
dongchen/resumable_transfer_fix
pdevine/sampling-cache-error
jessegross/mlx-usage
hoyyeva/openclaw-config
hoyyeva/app-html
pdevine/qwen3next
brucemacd/sign-sh-install
brucemacd/tui-update
brucemacd/usage-api
jmorganca/launch-empty
fix-app-dist-embed
mxyng/mlx-compile
mxyng/mlx-quant
mxyng/mlx-glm4.7
mxyng/mlx
brucemacd/simplify-model-picker
jmorganca/qwen3-concurrent
fix-glm-4.7-flash-mla-config
drifkin/qwen3-coder-opening-tag
brucemacd/usage-cli
fix-cuda12-fattn-shmem
ollama-imagegen-docs
parth/fix-multiline-inputs
brucemacd/config-docs
mxyng/model-files
mxyng/simple-execute
fix-imagegen-ollama-models
mxyng/async-upload
jmorganca/lazy-no-dtype-changes
imagegen-auto-detect-create
parth/decrease-concurrent-download-hf
fix-mlx-quantize-init
jmorganca/x-cleanup
usage
imagegen-readme
jmorganca/glm-image
mlx-gpu-cd
jmorganca/imagegen-modelfile
parth/agent-skills
parth/agent-allowlist
parth/signed-in-offline
parth/agents
parth/fix-context-chopping
improve-cloud-flow
parth/add-models-websearch
parth/prompt-renderer-mcp
jmorganca/native-settings
jmorganca/download-stream-hash
jmorganca/client2-rebased
brucemacd/oai-chat-req-multipart
jessegross/multi_chunk_reserve
grace/additional-omit-empty
grace/mistral-3-large
mxyng/tokenizer2
mxyng/tokenizer
jessegross/flash
hoyyeva/windows-nacked-app
mxyng/cleanup-attention
grace/deepseek-parser
hoyyeva/remember-unsent-prompt
parth/add-lfs-pointer-error-conversion
parth/olmo2-test2
hoyyeva/ollama-launchagent-plist
nicole/olmo-model
parth/olmo-test
mxyng/remove-embedded
parth/render-template
jmorganca/intellect-3
parth/remove-prealloc-linter
jmorganca/cmd-eval
nicole/nomic-embed-text-fix
mxyng/lint-2
hoyyeva/add-gemini-3-pro-preview
hoyyeva/load-model-list
mxyng/expand-path
mxyng/environ-2
hoyyeva/deeplink-json-encoding
parth/improve-tool-calling-tests
hoyyeva/conversation
hoyyeva/assistant-edit-response
hoyyeva/thinking
origin/brucemacd/invalid-char-i-err
parth/improve-tool-calling
jmorganca/required-omitempty
grace/qwen3-vl-tests
mxyng/iter-client
parth/docs-readme
nicole/embed-test
pdevine/integration-benchstat
parth/remove-generate-cmd
parth/add-toolcall-id
mxyng/server-tests
jmorganca/glm-4.6
jmorganca/gin-h-compat
drifkin/stable-tool-args
pdevine/qwen3-more-thinking
parth/add-websearch-client
nicole/websearch_local
jmorganca/qwen3-coder-updates
grace/deepseek-v3-migration-tests
mxyng/fix-create
jmorganca/cloud-errors
pdevine/parser-tidy
revert-12233-parth/simplify-entrypoints-runner
parth/enable-so-gpt-oss
brucemacd/qwen3vl
jmorganca/readme-simplify
parth/gpt-oss-structured-outputs
revert-12039-jmorganca/tools-braces
mxyng/embeddings
mxyng/gguf
mxyng/benchmark
mxyng/types-null
parth/move-parsing
mxyng/gemma2
jmorganca/docs
mxyng/16-bit
mxyng/create-stdin
pdevine/authorizedkeys
mxyng/quant
parth/opt-in-error-context-window
brucemacd/cache-models
brucemacd/runner-completion
jmorganca/llama-update-6
brucemacd/benchmark-list
brucemacd/partial-read-caps
parth/deepseek-r1-tools
mxyng/omit-array
parth/tool-prefix-temp
brucemacd/runner-test
jmorganca/qwen25vl
brucemacd/model-forward-test-ext
parth/python-function-parsing
jmorganca/cuda-compression-none
drifkin/num-parallel
drifkin/chat-truncation-fix
jmorganca/sync
parth/python-tools-calling
drifkin/array-head-count
brucemacd/create-no-loop
parth/server-enable-content-stream-with-tools
qwen25omni
mxyng/v3
brucemacd/ropeconfig
jmorganca/silence-tokenizer
parth/sample-so-test
parth/sampling-structured-outputs
brucemacd/doc-go-engine
parth/constrained-sampling-json
jmorganca/mistral-wip
brucemacd/mistral-small-convert
parth/sample-unmarshal-json-for-params
brucemacd/jomorganca/mistral
pdevine/bfloat16
jmorganca/mistral
brucemacd/mistral
pdevine/logging
parth/sample-correctness-fix
parth/sample-fix-sorting
jmorgan/sample-fix-sorting-extras
jmorganca/temp-0-images
brucemacd/parallel-embed-models
brucemacd/shim-grammar
jmorganca/fix-gguf-error
bmizerany/nameswork
jmorganca/faster-releases
bmizerany/validatenames
brucemacd/err-no-vocab
brucemacd/rope-config
brucemacd/err-hint
brucemacd/qwen2_5
brucemacd/logprobs
brucemacd/new_runner_graph_bench
progress-flicker
brucemacd/forward-test
brucemacd/go_qwen2
pdevine/gemma2
jmorganca/add-missing-symlink-eval
mxyng/next-debug
parth/set-context-size-openai
brucemacd/next-bpe-bench
brucemacd/next-bpe-test
brucemacd/new_runner_e2e
brucemacd/new_runner_qwen2
pdevine/convert-cohere2
brucemacd/convert-cli
parth/log-probs
mxyng/next-mlx
mxyng/cmd-history
parth/templating
parth/tokenize-detokenize
brucemacd/check-key-register
bmizerany/grammar
jmorganca/vendor-081b29bd
mxyng/func-checks
jmorganca/fix-null-format
parth/fix-default-to-warn-json
jmorganca/qwen2vl
jmorganca/no-concat
parth/cmd-cleanup-SO
brucemacd/check-key-register-structured-err
parth/openai-stream-usage
parth/fix-referencing-so
stream-tools-stop
jmorganca/degin-1
brucemacd/install-path-clean
brucemacd/push-name-validation
brucemacd/browser-key-register
jmorganca/openai-fix-first-message
jmorganca/fix-proxy
jessegross/sample
parth/disallow-streaming-tools
dhiltgen/remove_submodule
jmorganca/ga
jmorganca/mllama
pdevine/newlines
pdevine/geems-2b
jmorganca/llama-bump
mxyng/modelname-7
mxyng/gin-slog
mxyng/modelname-6
jyan/convert-prog
jyan/quant5
paligemma-support
pdevine/import-docs
jmorganca/openai-context
jyan/paligemma
jyan/p2
jyan/palitest
bmizerany/embedspeedup
jmorganca/llama-vit
brucemacd/allow-ollama
royh/ep-methods
royh/whisper
mxyng/api-models
mxyng/fix-memory
jyan/q4_4/8
jyan/ollama-v
royh/stream-tools
roy-embed-parallel
bmizerany/hrm
revert-5963-revert-5924-mxyng/llama3.1-rope
royh/embed-viz
jyan/local2
jyan/auth
jyan/local
jyan/parse-temp
jmorganca/template-mistral
jyan/reord-g
royh-openai-suffixdocs
royh-imgembed
royh-embed-parallel
jyan/quant4
royh-precision
jyan/progress
pdevine/fix-template
jyan/quant3
pdevine/ggla
mxyng/update-registry-domain
jmorganca/ggml-static
mxyng/create-context
jyan/v0.146
mxyng/layers-from-files
build_dist
bmizerany/noseek
royh-ls
royh-name
timeout
mxyng/server-timestamp
bmizerany/nosillyggufslurps
royh-params
jmorganca/llama-cpp-7c26775
royh-openai-delete
royh-show-rigid
jmorganca/enable-fa
jmorganca/no-error-template
jyan/format
royh-testdelete
bmizerany/fastverify
language_support
pdevine/ps-glitches
brucemacd/tokenize
bruce/iq-quants
bmizerany/filepathwithcoloninhost
mxyng/split-bin
bmizerany/client-registry
jmorganca/if-none-match
native
jmorganca/native
jmorganca/batch-embeddings
jmorganca/initcmake
jmorganca/mm
pdevine/showggmlinfo
modenameenforcealphanum
bmizerany/modenameenforcealphanum
jmorganca/done-reason
jmorganca/llama-cpp-8960fe8
ollama.com
bmizerany/filepathnobuild
bmizerany/types/model/defaultfix
rmdisplaylong
nogogen
bmizerany/x
modelfile-readme
bmizerany/replacecolon
jmorganca/limit
jmorganca/execstack
jmorganca/replace-assets
mxyng/tune-concurrency
jmorganca/testing
whitespace-detection
jmorganca/options
upgrade-all
scratch
cuda-search
mattw/airenamer
mattw/allmodelsonhuggingface
mattw/quantcontext
mattw/whatneedstorun
brucemacd/llama-mem-calc
mattw/faq-context
mattw/communitylinks
mattw/noprune
mattw/python-functioncalling
rename
mxyng/install
pulse
remove-first
editor
mattw/selfqueryingretrieval
cgo
mattw/howtoquant
api
matt/streamingapi
format-config
mxyng/extra-args
shell
update-nous-hermes
cp-model
upload-progress
fix-unknown-model
fix-model-names
delete-fix
insecure-registry
ls
deletemodels
progressbar
readme-updates
license-layers
skip-list
list-models
modelpath
matt/examplemodelfiles
distribution
go-opts
v0.30.0-rc7
v0.30.0-rc6
v0.30.0-rc5
v0.23.2
v0.23.2-rc0
v0.30.0-rc4
v0.30.0-rc3
v0.30.0-rc2
v0.30.0-rc1
v0.30.0-rc0
v0.23.1
v0.23.1-rc0
v0.23.0
v0.23.0-rc0
v0.22.1
v0.22.1-rc1
v0.22.1-rc0
v0.22.0
v0.22.0-rc1
v0.21.3-rc0
v0.21.2-rc1
v0.21.2
v0.21.2-rc0
v0.21.1
v0.21.1-rc1
v0.21.1-rc0
v0.21.0
v0.21.0-rc1
v0.21.0-rc0
v0.20.8-rc0
v0.20.7
v0.20.7-rc1
v0.20.7-rc0
v0.20.6
v0.20.6-rc1
v0.20.6-rc0
v0.20.5
v0.20.5-rc2
v0.20.5-rc1
v0.20.5-rc0
v0.20.4
v0.20.4-rc2
v0.20.4-rc1
v0.20.4-rc0
v0.20.3
v0.20.3-rc0
v0.20.2
v0.20.1
v0.20.1-rc2
v0.20.1-rc1
v0.20.1-rc0
v0.20.0
v0.20.0-rc1
v0.20.0-rc0
v0.19.0
v0.19.0-rc2
v0.19.0-rc1
v0.19.0-rc0
v0.18.4-rc1
v0.18.4-rc0
v0.18.3
v0.18.3-rc2
v0.18.3-rc1
v0.18.3-rc0
v0.18.2
v0.18.2-rc1
v0.18.2-rc0
v0.18.1
v0.18.1-rc1
v0.18.1-rc0
v0.18.0
v0.18.0-rc2
v0.18.0-rc1
v0.18.0-rc0
v0.17.8-rc4
v0.17.8-rc3
v0.17.8-rc2
v0.17.8-rc1
v0.17.8-rc0
v0.17.7
v0.17.7-rc2
v0.17.7-rc1
v0.17.7-rc0
v0.17.6
v0.17.5
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.1-rc2
v0.17.1-rc1
v0.17.1-rc0
v0.17.0
v0.17.0-rc2
v0.17.0-rc1
v0.17.0-rc0
v0.16.3
v0.16.3-rc2
v0.16.3-rc1
v0.16.3-rc0
v0.16.2
v0.16.2-rc0
v0.16.1
v0.16.0
v0.16.0-rc2
v0.16.0-rc0
v0.16.0-rc1
v0.15.6
v0.15.5
v0.15.5-rc5
v0.15.5-rc4
v0.15.5-rc3
v0.15.5-rc2
v0.15.5-rc1
v0.15.5-rc0
v0.15.4
v0.15.3
v0.15.2
v0.15.1
v0.15.1-rc1
v0.15.1-rc0
v0.15.0-rc6
v0.15.0
v0.15.0-rc5
v0.15.0-rc4
v0.15.0-rc3
v0.15.0-rc2
v0.15.0-rc1
v0.15.0-rc0
v0.14.3
v0.14.3-rc3
v0.14.3-rc2
v0.14.3-rc1
v0.14.3-rc0
v0.14.2
v0.14.2-rc1
v0.14.2-rc0
v0.14.1
v0.14.0-rc11
v0.14.0
v0.14.0-rc10
v0.14.0-rc9
v0.14.0-rc8
v0.14.0-rc7
v0.14.0-rc6
v0.14.0-rc5
v0.14.0-rc4
v0.14.0-rc3
v0.14.0-rc2
v0.14.0-rc1
v0.14.0-rc0
v0.13.5
v0.13.5-rc1
v0.13.5-rc0
v0.13.4-rc2
v0.13.4
v0.13.4-rc1
v0.13.4-rc0
v0.13.3
v0.13.3-rc1
v0.13.3-rc0
v0.13.2
v0.13.2-rc2
v0.13.2-rc1
v0.13.2-rc0
v0.13.1
v0.13.1-rc2
v0.13.1-rc1
v0.13.1-rc0
v0.13.0
v0.13.0-rc0
v0.12.11
v0.12.11-rc1
v0.12.11-rc0
v0.12.10
v0.12.10-rc1
v0.12.10-rc0
v0.12.9-rc0
v0.12.9
v0.12.8
v0.12.8-rc0
v0.12.7
v0.12.7-rc1
v0.12.7-rc0
v0.12.7-citest0
v0.12.6
v0.12.6-rc1
v0.12.6-rc0
v0.12.5
v0.12.5-rc0
v0.12.4
v0.12.4-rc7
v0.12.4-rc6
v0.12.4-rc5
v0.12.4-rc4
v0.12.4-rc3
v0.12.4-rc2
v0.12.4-rc1
v0.12.4-rc0
v0.12.3
v0.12.2
v0.12.2-rc0
v0.12.1
v0.12.1-rc1
v0.12.1-rc2
v0.12.1-rc0
v0.12.0
v0.12.0-rc1
v0.12.0-rc0
v0.11.11
v0.11.11-rc3
v0.11.11-rc2
v0.11.11-rc1
v0.11.11-rc0
v0.11.10
v0.11.9
v0.11.9-rc0
v0.11.8
v0.11.8-rc0
v0.11.7-rc1
v0.11.7-rc0
v0.11.7
v0.11.6
v0.11.6-rc0
v0.11.5-rc4
v0.11.5-rc3
v0.11.5
v0.11.5-rc5
v0.11.5-rc2
v0.11.5-rc1
v0.11.5-rc0
v0.11.4
v0.11.4-rc0
v0.11.3
v0.11.3-rc0
v0.11.2
v0.11.1
v0.11.0-rc0
v0.11.0-rc1
v0.11.0-rc2
v0.11.0
v0.10.2-int1
v0.10.1
v0.10.0
v0.10.0-rc4
v0.10.0-rc3
v0.10.0-rc2
v0.10.0-rc1
v0.10.0-rc0
v0.9.7-rc1
v0.9.7-rc0
v0.9.6
v0.9.6-rc0
v0.9.6-ci0
v0.9.5
v0.9.4-rc5
v0.9.4-rc6
v0.9.4
v0.9.4-rc3
v0.9.4-rc4
v0.9.4-rc1
v0.9.4-rc2
v0.9.4-rc0
v0.9.3
v0.9.3-rc5
v0.9.4-citest0
v0.9.3-rc4
v0.9.3-rc3
v0.9.3-rc2
v0.9.3-rc1
v0.9.3-rc0
v0.9.2
v0.9.1
v0.9.1-rc1
v0.9.1-rc0
v0.9.1-ci1
v0.9.1-ci0
v0.9.0
v0.9.0-rc0
v0.8.0
v0.8.0-rc0
v0.7.1-rc2
v0.7.1
v0.7.1-rc1
v0.7.1-rc0
v0.7.0
v0.7.0-rc1
v0.7.0-rc0
v0.6.9-rc0
v0.6.8
v0.6.8-rc0
v0.6.7
v0.6.7-rc2
v0.6.7-rc1
v0.6.7-rc0
v0.6.6
v0.6.6-rc2
v0.6.6-rc1
v0.6.6-rc0
v0.6.5-rc1
v0.6.5
v0.6.5-rc0
v0.6.4-rc0
v0.6.4
v0.6.3-rc1
v0.6.3
v0.6.3-rc0
v0.6.2
v0.6.2-rc0
v0.6.1
v0.6.1-rc0
v0.6.0-rc0
v0.6.0
v0.5.14-rc0
v0.5.13
v0.5.13-rc6
v0.5.13-rc5
v0.5.13-rc4
v0.5.13-rc3
v0.5.13-rc2
v0.5.13-rc1
v0.5.13-rc0
v0.5.12
v0.5.12-rc1
v0.5.12-rc0
v0.5.11
v0.5.10
v0.5.9
v0.5.9-rc0
v0.5.8-rc13
v0.5.8
v0.5.8-rc12
v0.5.8-rc11
v0.5.8-rc10
v0.5.8-rc9
v0.5.8-rc8
v0.5.8-rc7
v0.5.8-rc6
v0.5.8-rc5
v0.5.8-rc4
v0.5.8-rc3
v0.5.8-rc2
v0.5.8-rc1
v0.5.8-rc0
v0.5.7
v0.5.6
v0.5.5
v0.5.5-rc0
v0.5.4
v0.5.3
v0.5.3-rc0
v0.5.2
v0.5.2-rc3
v0.5.2-rc2
v0.5.2-rc1
v0.5.2-rc0
v0.5.1
v0.5.0
v0.5.0-rc1
v0.4.8-rc0
v0.4.7
v0.4.6
v0.4.5
v0.4.4
v0.4.3
v0.4.3-rc0
v0.4.2
v0.4.2-rc1
v0.4.2-rc0
v0.4.1
v0.4.1-rc0
v0.4.0
v0.4.0-rc8
v0.4.0-rc7
v0.4.0-rc6
v0.4.0-rc5
v0.4.0-rc4
v0.4.0-rc3
v0.4.0-rc2
v0.4.0-rc1
v0.4.0-rc0
v0.4.0-ci3
v0.3.14
v0.3.14-rc0
v0.3.13
v0.3.12
v0.3.12-rc5
v0.3.12-rc4
v0.3.12-rc3
v0.3.12-rc2
v0.3.12-rc1
v0.3.11
v0.3.11-rc4
v0.3.11-rc3
v0.3.11-rc2
v0.3.11-rc1
v0.3.10
v0.3.10-rc1
v0.3.9
v0.3.8
v0.3.7
v0.3.7-rc6
v0.3.7-rc5
v0.3.7-rc4
v0.3.7-rc3
v0.3.7-rc2
v0.3.7-rc1
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.8
v0.2.8-rc2
v0.2.8-rc1
v0.2.7
v0.2.6
v0.2.5
v0.2.4
v0.2.3
v0.2.2
v0.2.2-rc2
v0.2.2-rc1
v0.2.1
v0.2.0
v0.1.49-rc14
v0.1.49-rc13
v0.1.49-rc12
v0.1.49-rc11
v0.1.49-rc10
v0.1.49-rc9
v0.1.49-rc8
v0.1.49-rc7
v0.1.49-rc6
v0.1.49-rc4
v0.1.49-rc5
v0.1.49-rc3
v0.1.49-rc2
v0.1.49-rc1
v0.1.48
v0.1.47
v0.1.46
v0.1.45-rc5
v0.1.45
v0.1.45-rc4
v0.1.45-rc3
v0.1.45-rc2
v0.1.45-rc1
v0.1.44
v0.1.43
v0.1.42
v0.1.41
v0.1.40
v0.1.40-rc1
v0.1.39
v0.1.39-rc2
v0.1.39-rc1
v0.1.38
v0.1.37
v0.1.36
v0.1.35
v0.1.35-rc1
v0.1.34
v0.1.34-rc1
v0.1.33
v0.1.33-rc7
v0.1.33-rc6
v0.1.33-rc5
v0.1.33-rc4
v0.1.33-rc3
v0.1.33-rc2
v0.1.33-rc1
v0.1.32
v0.1.32-rc2
v0.1.32-rc1
v0.1.31
v0.1.30
v0.1.29
v0.1.28
v0.1.27
v0.1.26
v0.1.25
v0.1.24
v0.1.23
v0.1.22
v0.1.21
v0.1.20
v0.1.19
v0.1.18
v0.1.17
v0.1.16
v0.1.15
v0.1.14
v0.1.13
v0.1.12
v0.1.11
v0.1.10
v0.1.9
v0.1.8
v0.1.7
v0.1.6
v0.1.5
v0.1.4
v0.1.3
v0.1.2
v0.1.1
v0.1.0
v0.0.21
v0.0.20
v0.0.19
v0.0.18
v0.0.17
v0.0.16
v0.0.15
v0.0.14
v0.0.13
v0.0.12
v0.0.11
v0.0.10
v0.0.9
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
Labels
Clear labels
amd
api
app
bug
build
cli
cloud
compatibility
context-length
create
docker
documentation
embeddings
feature request
feedback wanted
good first issue
gpt-oss
gpu
harmony
help wanted
image
install
intel
js
launch
linux
macos
memory
mlx
model
needs more info
networking
nvidia
ollama.com
performance
pull-request
python
question
registry
rendering
thinking
tools
top
vulkan
windows
wsl
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/ollama#67949
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @BennisonDevadoss on GitHub (Feb 12, 2025).
Original GitHub issue: https://github.com/ollama/ollama/issues/9054
I have a server with two Nvidia L4 GPUs, and I’m running the LLaMA 3.1 8B model using Ollama. Here’s the current behavior:
What Works:
What Does Not Work:
OLLAMA_NUM_PARALLELparameter to 3, but it doesn’t seem to have any effect.What I Want to Achieve:
Questions:
Any help or insights would be greatly appreciated!
@rick-github commented on GitHub (Feb 12, 2025):
ollama doesn't load a model multiple times, what
OLLAMA_NUM_PARALLELdoes is create a context buffer for each parallel request. The model weights are the same for each context buffer. The clients send 3 simultaneous requests and they get processed concurrently. If more simultaneous requests than completion slots are sent, they are queued up until one of the on-going completions is finished. See here for more info on concurrent request processing.@pdevine commented on GitHub (Feb 12, 2025):
@BennisonDevadoss as @rick-github mentioned, you don't need to waste the VRAM loading the same model into memory multiple times. I'm going to go ahead and close the issue as answered, but feel free to keep commenting.
@BilibalaX commented on GitHub (Apr 29, 2025):
I have a similar question. With four GPUs (40GB VRAM), the model size (20GB) is ok to load on each GPU. My task is to input 100,000 messages for information extraction. If I set OLLAMA_NUM_PARALLEL as 4, does it mean I have tasks running on each of the GPUs separately and I can have 4 times the speed?
Then the other parameter OLLAMA_MAX_LOADED_MODELS is the maximum number of models that can be loaded. If I set it as 4, will Ollama regard them as 4 instances?
@rick-github commented on GitHub (Apr 29, 2025):
No, if you set
OLLAMA_NUM_PARALLEL=4, ollama will process up to 4 requests at a time but which GPU they run on is indeterministic. If you really must have each GPU processing a different request simultaneously, you need to run 4 ollama servers, assign each a different GPU withCUDA_VISIBLE_DEVICES, and use a load balancing proxy in front the distribute the queries.Note ollama gets better utilization when a single GPU does concurrent requests:
So you could also set
OLLAMA_NUM_PARALLELfor each of these servers and increase throughput. For example:@BilibalaX commented on GitHub (Apr 30, 2025):
@rick-github Thanks for your detailed interpretation. I finally managed to run Ollama simultaneously on our HPC system, where I have to use different containers and assign different ports. I’m not a software engineer; I’m using Ollama and LLMs as tools for social-science research, so please forgive any naïve questions.
Regarding the graph you posted, the speed improvement when setting OLLAMA_NUM_PARALLEL is remarkable. My workflow involves feeding many independent texts into the model for information extraction. If I increase OLLAMA_NUM_PARALLEL, can I expect a faster overall throughput?
Here mentioned that “the default will auto-select either 4 or 1 based on available memory.” Under what circumstances will it choose 4 versus 1? And is there a recommended value for OLLAMA_NUM_PARALLEL given typical hardware capability.
Many thanks for your help.
@rick-github commented on GitHub (Apr 30, 2025):
Yes, the overall throughput will increase, up to a level. You can see how the graph starts to flatten, as more and more of the processing units in the GPU are engaged, there will eventually be a bottleneck after which throughput will not increase (and may go down). Note that while the aggregate TPS goes up, the TPS per request goes down, so this is a negative effect if the clients are expecting real-time interaction. In your case of information extraction I assume that's not an issue.
The selection algorithm is: will 4x context buffer fit in VRAM without spilling layers to system RAM? If yes, OLLAMA_NUM_PARALLEL=4, otherwise 1. In your case where you have 40G VRAM and a 20G model, there's no downside to increasing OLLAMA_NUM_PARALLEL until all of the VRAM on a GPU is allocated. You don't indicate what context size you are using, so what you are aiming for is (40 - 20) > (context_size * parallel * k) where k is a constant for how much VRAM a single token takes. You can adjust either context size (OLLAMA_CONTEXT_LENGTH) or parallel (OLLAMA_NUM_PARALLEL) to maximize the size of the allocated context buffer to the point where most of the VRAM on a GPU has been allocated (you can check with
nvidia-smi).Also note that because of the way that throughput scales with OLLAMA_NUM_PARALLEL, it might be simpler to just use a single ollama server, give it access to all GPU devices, and set OLLAMA_NUM_PARALLEL to 4x what you would set it for the case where you are running 4 servers. Since the model is loaded only once, you get an extra 60G of space for context buffer. The downside is that there is an inherent bottleneck in this arrangment from the PCI bus, see here, so performance will not be as good as 4 individual servers. But the simpler configuration (no nginx) might be worth it.
And a caveat - the scaling of throughput depends on model, configuration, hardware and workload. So some experimentation may be required to the optimal results.
@aubourg commented on GitHub (May 2, 2025):
I have a similar issue, here is my use case. I have a machine with 8 GPUs. I want to run embarassingly parallel tasks but with only two classes of models. I see only 2 GPUs are used to process 8 parallel and independent tasks, the others are idle. It looks like since I am using only two different models, ollama uses 2 GPUs. It would clearly be more efficient to load 4 instances of each model, and run stuff on 8 GPUs. If I use artificially different models, then it indeed runs faster, using more of my GPUs...
@rick-github commented on GitHub (May 2, 2025):
As described above, increase
OLLAMA_NUM_PARALLEL, run multiple servers, or both.@aubourg commented on GitHub (May 2, 2025):
From what I understand, OLLAMA_NUM_PARALLEL will not increase the numbers of GPUs that are used, I should run multiple servers. Or perhaps clone the models under different names?
@rick-github commented on GitHub (May 2, 2025):
The models are identified by the sha256 of the model weights, cloning a model will not allow the same model to be run more than once in a server. If you increase OLLAMA_NUM_PARALLEL to the point where the required KV cache no longer fits on a single GPU, ollama will distribute the model and cache across all available GPUs. You can achieve the same effect by setting
OLLAMA_SCHED_SPREAD=1in the server environment.@LukasBreit commented on GitHub (May 9, 2025):
I am stucking on this topic. I am quite new to Ollama so please excuse any misunderstandings.
I am working on a M3 Pro and have a Langchain app where I am using ChatOllama with model "granite3.2:8b". The same model is invoked several times, what I want to be run in parallel.
I have tried to serve multiple servers on different ports with commands like
OLLAMA_HOST=localhost:11436 OLLAMA_NUM_PARALLEL=2 ollama serve, which lead to a little performance improvement.When I serve just a single ollama instance, but with different values for OLLAMA_NUM_PARALLEL, I can't detect any difference in performance. I have attached the output, which is generated when starting the server with
OLLAMA_HOST=localhost OLLAMA_PORT=11434 OLLAMA_NUM_PARALLEL=1 OLLAMA_CONTEXT_LENGTH=32000 ollama serve- honestly I don't understand the output.ollama serve_output.txt
Attached is also the code, which I am using for calling the model. As the context exceeds the default context length I have set the num_ctx parameter in ChatOllama.
code.txt
It would be great getting any feedback. Is it possible to archieve parallel processing on my M3 with this large context size? By setting the OLLAMA_NUM_PARALLEL variable or by running multiple ollama servers? If more information is needed just let me know!
@rick-github commented on GitHub (May 12, 2025):
From the log we see that queries are processed sequentially, because
OLLAMA_NUM_PARALLEL=1. If you increase this, ollama will do concurrent processing, up to the number you specify. I'm not familiar with the GPU on an M3 Pro (the graph above is for Nvidia hardware), Apple describes a '16-core Neural Engine' so I imagine you should see some degree of parallelism.You can use the script below to see if parallelism improves generation speed. I'm not sure how close MacOS is to a linux environment, so you may have to install some command line utils. Note that the overall TPS from the script includes prompt processing and
curloverhead so is a little inaccurate, but you should see the rate go up as the amount of parallelism is increased.@LukasBreit commented on GitHub (May 12, 2025):
Thanks for your feedback!
WIth some little adjustments I was able to run the script and I can see the changing values in the output.
bash ollama_parallel_test.sh 2
Overall TPS: 56.13
Average per-completion TPS: 35.77
bash ollama_parallel_test.sh 3
Overall TPS: 62.42
Average per-completion TPS: 27.78
bash ollama_parallel_test.sh 4
Overall TPS: 66.41
Average per-completion TPS: 20.40
bash ollama_parallel_test.sh 5
Overall TPS: 63.77
Average per-completion TPS: 20.10
bash ollama_parallel_test.sh 8
Overall TPS: 66.42
Average per-completion TPS: 19.12
I have tested around a bit today and there are some results that I don't quite understand.
In my setup I am working with ChatOllama in Langchain and have a list of prompts that shall be processed in parallel. Therefore I have used the abatch method. These prompts need a big context size of up to 32K.
So I have instantiated the ChatOllama with
is_relevant_llm = ChatOllama(model="granite3.2:8b", temperature=0, format="json", max_tokens=100, **num_ctx**=32000).For processing I have tried different setups:
OLLAMA_HOST=localhost OLLAMA_PORT=11434 OLLAMA_NUM_PARALLEL=2 OLLAMA_CONTEXT_LENGTH=32000 ollama serve..and using this instance by the ChatOllama object. According to the logs it seems to me that indeed two requests are handled in parallel.
ollama_parallel_test.txt
I have tested all these settings and played around with them, but it seems that the plain ChatOllama handling (3. case) was already the quickest one. Can you explain how this is handled behind the scenes? Is my hardware not able to process the prompts faster? It seems that when I increase the number of parallelizations each of them just gets slower so that there is no performance increase in the end.
@rick-github commented on GitHub (May 12, 2025):
Note that for
ollama_parallel_test.shto show the effect of parallelism, you need to setOLLAMA_NUM_PARALLELto the maximum number of parallel requests you want to handle. You may have done that but your post and the log only showOLLAMA_NUM_PARALLEL=2. You also started the server withOLLAMA_CONTEXT_LENGTH=32000but the log shows the context length is 10000. Also,OLLAMA_PORTis not an ollama configuration variable. The form isOLLAMA_HOST=localhost:11434, where the port number uses the default 11434 if not supplied (which is why it works anyway in your invocation).I'm not familiar enough with langchain or Apple hardware to offer any explanation about the different scenarios. If scenario 3 is using the default configuration, then it may be starting with
OLLAMA_NUM_PARALLEL=4. In general, individual completions will get slower as parallelism increases, while the overall completion rate will increase up to a limit determined by the hardware.@Teeeto commented on GitHub (May 22, 2025):
I have the same question about scaling Ollama effectively. I have 4 GPUs (NVidia) only one is used (model fits it completely 20 GB / 24GB). I want to avoid using load balancer and multiple instances since it introduces another point of config/maintenance/failure.
Ollama docs say there is an inbuilt balancer but I can not get it to work.
https://github.com/ollama/ollama/blob/main/docs/faq.md#how-does-ollama-handle-concurrent-requests
OLLAMA_MAX_LOADED_MODELS is set to 3, OLLAMA_NUM_PARALLEL set to 4. But running 10 complex parallel requests I cannot see ollama spawning another model.
@rick-github commented on GitHub (May 22, 2025):
It doesn't spawn another model, it just uses more capacity when parallel processing. See the graph here. If you want to maximize overall throughput when running 10 complex parallel requests, set
OLLAMA_NUM_PARALLEL=10. As discussed above, token generation rate for individual completions will be slower, but the aggregate token generation rate will be higher.@simonabisiani commented on GitHub (Jun 12, 2025):
@BilibalaX I come from a similar background and am facing a similar problem. Could I reach out to you with some questions?
@falmanna commented on GitHub (Aug 21, 2025):
This should be somewhere in the faqs. It took me a lot of reading to understand how parallel works in ollama
@rick-github commented on GitHub (Aug 21, 2025):
https://github.com/ollama/ollama/blob/main/docs/faq.md#how-does-ollama-handle-concurrent-requests
@falmanna commented on GitHub (Aug 21, 2025):
@rick-github I read that multiple times, but the comment + the plot made it click for me