llama.cpp Feature Request: Pull from Ollama repo

ztigrdn8  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(28)

先决条件

  • 我正在运行最新的代码。如果可能的话,请提及版本。
  • 我仔细遵循了 README.md
  • 我使用与我的问题相关的关键词进行搜索,以确保我创建的新问题尚未打开(或已关闭)。
  • 我审阅了 Discussions ,并有一个新的有用的改进要分享。

功能描述

已将示例实现作为脚本附加,可以从下面的 Ollama 仓库中拉取。
将其集成并使其可用

动机

Ollama 库使得提取模型变得容易,它使用简短、简单的字符串

可能的实现

# To run the relevant tests use
# go test -tags=integration ./server
set -e
set -o pipefail

export OLLAMA_MODELS=test_data/models
REGISTRY_SCHEME=https
REGISTRY=registry.ollama.ai
TEST_MODELS=("library/orca-mini:latest" "library/llava:7b")
ACCEPT_HEADER="Accept: application/vnd.docker.distribution.manifest.v2+json"

for model in ${TEST_MODELS[@]}; do
    TEST_MODEL=$(echo ${model} | cut -f1 -d:)
    TEST_MODEL_TAG=$(echo ${model} | cut -f2 -d:)
    mkdir -p ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/
    mkdir -p ${OLLAMA_MODELS}/blobs/

    echo "Pulling manifest for ${TEST_MODEL}:${TEST_MODEL_TAG}"
    curl -s --header "${ACCEPT_HEADER}" \
        -o ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} \
        ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/manifests/${TEST_MODEL_TAG}

    CFG_HASH=$(cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} | jq -r ".config.digest")
    echo "Pulling config blob ${CFG_HASH}"
    curl -L -C - --header "${ACCEPT_HEADER}" \
        -o ${OLLAMA_MODELS}/blobs/${CFG_HASH} \
        ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/blobs/${CFG_HASH}

    cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG}
    for LAYER in $(cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} | jq -r ".layers[].digest"); do
        echo "Pulling blob ${LAYER}"
        curl -L -C - --header "${ACCEPT_HEADER}" \
            -o ${OLLAMA_MODELS}/blobs/${LAYER} \
            ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/blobs/${LAYER}
    done
done
atmip9wb

atmip9wb1#

从llamafile:

当你使用ollama下载一个新模型时,所有其元数据都将存储在一个清单文件中,位于~/.ollama/models/manifests/registry.ollama.ai/library/目录下。目录和清单文件名是根据ollama list返回的模型名称。例如,对于llama3:latest,清单文件将命名为.ollama/models/manifests/registry.ollama.ai/library/llama3/latest.

清单将与模型相关的每个文件(如GGUF权重、许可证、提示模板等)Map到一个sha256摘要。对应于媒体类型为application/vnd.ollama.image.model的元素的摘要是指向模型的GGUF文件的摘要。

每个sha256摘要也用作~/.ollama/models/blobs目录中的文件名(如果你查看该目录,你只会看到那些sha256-*文件名)。这意味着你可以直接通过将sha256摘要作为模型文件名来运行llamafile。因此,例如,如果llama3:latest GGUF文件的摘要是sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29,你可以按照以下方式运行llamafile:

相关问题