修改Ollama預設的上下文長度(ContextLength)

很多人不知道的事情是,Ollama預設載入模型進行問答時,預設的Context長度是2K(2048),只要輸入稍微長一點的文章立刻就爆炸了,本篇就是教導你如何透過Modelfile來修正這個問題,畢竟舉例來說,2024年07月發表的llama3.1支援的上下文長度就已經高達128K

透過Docker建立ollama container

docker run -d -p 11434:11434 -e OLLAMA_KEEP_ALIVE=-1 -v E:\DockerSharedFolder:/shared --gpus=all --name ollama ollama/ollama

製作Modelfile

這裡ollama container已經透過Bind Mounts方法,在裡面掛載一個名為shared目錄,目錄裡面將存在這個Modelfile內容,檔案名稱為ModelfileForContext32K,可以在Windows系統下編輯該檔案:

# 重設上下文長度至32K
FROM llama3.1
PARAMETER num_ctx 32768

製作LLAMA3.1:8b模型

ollama create llama3.1 -f /shared/ModelfileForContext32K

接著ollama就會自動下載關於llama3.1模型必要的檔案後,依照Modelfile的指示製造成上下文32K的模型。完成後,可以輸入下列指令確認:

~ ollama show llama3.1
  Model
    architecture        llama
    parameters          8.0B
    context length      131072
    embedding length    4096
    quantization        Q4_K_M

  Parameters
    num_ctx    32768
    stop       "<|start_header_id|>"
    stop       "<|end_header_id|>"
    stop       "<|eot_id|>"

  License
    LLAMA 3.1 COMMUNITY LICENSE AGREEMENT
    Llama 3.1 Version Release Date: July 23, 2024

從上面的輸出結果,我們可以看到Parameters - num_ctx參數,已經被指定成32768嘍。

Docker Image Container Ollama Context CTX ContextLength Adjust Modify