ollama "错误:json:无法将数组解组到Go结构体字段Params.eos_token_id中,该字段类型为int" - 在导入来自huggingface的llama 3.1 8B safetensor模型时出现,

mpbci0fu  于 6个月前  发布在  Go
关注(0)|答案(3)|浏览(54)

问题是什么?

问题是什么?

我尝试使用 ollama create -f Modelfile 从huggingface导入llama 3.1 8B模型,但遇到了错误:Error: json: cannot unmarshal array into Go struct field Params.eos_token_id of type int。我找到了这个错误的浅层原因,并简单地修复了它。但我想了解为什么会出现这个错误,以及是否有更好的解决方案。

从错误中得到什么?

Go struct 获取 int 作为 eos_token_id 的替代。但是 config.json 文件和 generation_config.json 文件包含 "eos_token_id": [128001, 128008, 128009]。因此,它们面临类型不匹配的问题,我们得到了这个错误。

我的简单解决方案是什么?

我没有具体的原因就将 eos_token_id 的值更改为 "eos_token_id": 128001,然后解决了问题并创建了一个模型。

为什么会出现这个错误?正确的解决方案是什么?

我不知道。如果有人知道,请告知。

操作系统

Linux

GPU

Nvidia

CPU

Intel

Ollama版本

0.2.8

t98cgbkg

t98cgbkg1#

我在这个docker日志中看到了这个错误
error from daemon in stream: Error grabbing logs: invalid character 'l' after object key:value pair

5jvtdoz2

5jvtdoz22#

创建llama3.1 -f lama31.txt
传输模型数据
解包模型元数据
错误:json:无法将数组解析为Go结构体字段Params.eos_token_id的类型int
配置文件是:
FROM D:\LLaMA-Factory\Meta-Llama-3.1-8B-Instruct
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
PARAMETER num_keep 24

ccgok5k5

ccgok5k53#

这与问题无关,但当我在Postman中向/api/generate发送POST请求时,我遇到了完全相同的错误。结果发现,这个问题是由于流值中的引号引起的。例如:

{
"model":"llama3",
"prompt": "once upon a time",
"stream": "false" // this causes a problem
}

VS.

{
"model":"llama3",
"prompt": "once upon a time",
"stream": false // this works
}

You possibly have a similar syntax error somewhere?

相关问题