LLama-CPP-PYTHON에서 DeepSeek-R1-Distill-Qwen-32B 로드시 토크나이저 문제 발생!

2025. 1. 31. 15:24인공지능

2025년 1월 28일
요즘 유행하는 LLM 모델을 돌릴려고하는데 아래와 같은 메시지가 나타나면서 실행이 되지 않았다.(25년 01월 28일 기준)

root@350326956c6a:~# python3 -m llama_cpp.server --n_gpu_layers -1 --n_ctx 32768 --host 0.0.0.0 --port 5000 --model DeepSeek-R1-Distill-Qwen-32B-Q6_K.gguf
ggml_cuda_init: GGML_CUDA_FORCE_MMQ:    no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 CUDA devices:
  Device 0: Quadro RTX 8000, compute capability 7.5, VMM: yes
llama_model_load_from_file: using device CUDA0 (Quadro RTX 8000) - 47759 MiB free
llama_model_loader: loaded meta data with 26 key-value pairs and 771 tensors from DeepSeek-R1-Distill-Qwen-32B-Q6_K.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv   0:                       general.architecture str              = qwen2
llama_model_loader: - kv   1:                               general.type str              = model
llama_model_loader: - kv   2:                               general.name str              = DeepSeek R1 Distill Qwen 32B
llama_model_loader: - kv   3:                           general.basename str              = DeepSeek-R1-Distill-Qwen
llama_model_loader: - kv   4:                         general.size_label str              = 32B
llama_model_loader: - kv   5:                          qwen2.block_count u32              = 64
llama_model_loader: - kv   6:                       qwen2.context_length u32              = 131072
llama_model_loader: - kv   7:                     qwen2.embedding_length u32              = 5120
llama_model_loader: - kv   8:                  qwen2.feed_forward_length u32              = 27648
llama_model_loader: - kv   9:                 qwen2.attention.head_count u32              = 40
llama_model_loader: - kv  10:              qwen2.attention.head_count_kv u32              = 8
llama_model_loader: - kv  11:                       qwen2.rope.freq_base f32              = 1000000.000000
llama_model_loader: - kv  12:     qwen2.attention.layer_norm_rms_epsilon f32              = 0.000010
llama_model_loader: - kv  13:                       tokenizer.ggml.model str              = gpt2
llama_model_loader: - kv  14:                         tokenizer.ggml.pre str              = deepseek-r1-qwen
llama_model_loader: - kv  15:                      tokenizer.ggml.tokens arr[str,152064]  = ["!", "\"", "#", "$", "%", "&", "'", ...
llama_model_loader: - kv  16:                  tokenizer.ggml.token_type arr[i32,152064]  = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
llama_model_loader: - kv  17:                      tokenizer.ggml.merges arr[str,151387]  = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",...
llama_model_loader: - kv  18:                tokenizer.ggml.bos_token_id u32              = 151646
llama_model_loader: - kv  19:                tokenizer.ggml.eos_token_id u32              = 151643
llama_model_loader: - kv  20:            tokenizer.ggml.padding_token_id u32              = 151643
llama_model_loader: - kv  21:               tokenizer.ggml.add_bos_token bool             = true
llama_model_loader: - kv  22:               tokenizer.ggml.add_eos_token bool             = false
llama_model_loader: - kv  23:                    tokenizer.chat_template str              = {% if not add_generation_prompt is de...
llama_model_loader: - kv  24:               general.quantization_version u32              = 2
llama_model_loader: - kv  25:                          general.file_type u32              = 18
llama_model_loader: - type  f32:  321 tensors
llama_model_loader: - type q6_K:  450 tensors
llama_model_load: error loading model: error loading model vocabulary: unknown pre-tokenizer type: 'deepseek-r1-qwen'
llama_model_load_from_file: failed to load model
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/__main__.py", line 100, in <module>
    main()
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/__main__.py", line 86, in main
    app = create_app(
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/app.py", line 150, in create_app
    set_llama_proxy(model_settings=model_settings)
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/app.py", line 70, in set_llama_proxy
    _llama_proxy = LlamaProxy(models=model_settings)
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/model.py", line 31, in __init__
    self._current_model = self.load_llama_from_model_settings(
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/server/model.py", line 236, in load_llama_from_model_settings
    _model = create_fn(
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/llama.py", line 369, in __init__
    internals.LlamaModel(
  File "/usr/local/lib/python3.10/dist-packages/llama_cpp/_internals.py", line 56, in __init__
    raise ValueError(f"Failed to load model from file: {path_model}")
ValueError: Failed to load model from file: DeepSeek-R1-Distill-Qwen-32B-Q6_K.gguf

모르는 토크나이저 타입이라고....
인터넷 뒤져보니 llama-cpp는 이게 패치가 되었는데 아직 llama-cpp-python에는 적용이 되지 않은듯하다. 쫌만 기다리면 업데이트 될것 같음...기다리자...
 


25년 01월 31일
2박3일 여행다녀왔다. 혹시나 하는 마음으로 깃허브 이슈 탭을 클릭해서 같은 문제가 있었는지 확인해보았는데 업데이트 된것처럼 글이 올라왔다!!!
DeepSeek-R1-Distill-Qwen-32B-GGUF needs the deepseek-r1-qwen tokenizer · Issue #1900 · abetlen/llama-cpp-python

DeepSeek-R1-Distill-Qwen-32B-GGUF needs the deepseek-r1-qwen tokenizer · Issue #1900 · abetlen/llama-cpp-python

Current Behavior Can't run DeepSeek-R1-Distill-Qwen-32B-GGUF, I get a tokenizer error: "llama_model_load: error loading model: error loading model vocabulary: unknown pre-tokenizer type: 'deepseek-...

github.com

 
바로 업데이트를 해보자. nvidia용으로 변수를 잡아주고 pip로 업데이트를 실시했다. 컴파일하는데 조금 오래걸리니 커피 한잔하고 오자.

root@350326956c6a:~# export CMAKE_ARGS="-DLLAMA_CUBLAS=OFF -DGGML_CUDA=ON"
root@350326956c6a:~# pip install --upgrade llama-cpp-python
Requirement already satisfied: llama-cpp-python in /usr/local/lib/python3.10/dist-packages (0.3.6)
Collecting llama-cpp-python
  Downloading llama_cpp_python-0.3.7.tar.gz (66.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.7/66.7 MB 24.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.20.0 in /usr/local/lib/python3.10/dist-packages (from llama-cpp-python) (1.26.4)
Requirement already satisfied: jinja2>=2.11.3 in /usr/local/lib/python3.10/dist-packages (from llama-cpp-python) (3.1.4)
Requirement already satisfied: typing-extensions>=4.5.0 in /usr/local/lib/python3.10/dist-packages (from llama-cpp-python) (4.12.1)
Requirement already satisfied: diskcache>=5.6.1 in /usr/local/lib/python3.10/dist-packages (from llama-cpp-python) (5.6.3)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2>=2.11.3->llama-cpp-python) (2.1.5)
Building wheels for collected packages: llama-cpp-python
  Building wheel for llama-cpp-python (pyproject.toml) ... done
  Created wheel for llama-cpp-python: filename=llama_cpp_python-0.3.7-cp310-cp310-linux_x86_64.whl size=308979963 sha256=539e14d69ab3393c40a56d9a6f5d6618ea6526056f6ae314315f43eae9c70d6e
  Stored in directory: /root/.cache/pip/wheels/5c/8f/58/a39eb13258f3bbf64bb36ed76d31979579a6f175be38de06b7
Successfully built llama-cpp-python
Installing collected packages: llama-cpp-python
  Attempting uninstall: llama-cpp-python
    Found existing installation: llama_cpp_python 0.3.6
    Uninstalling llama_cpp_python-0.3.6:
      Successfully uninstalled llama_cpp_python-0.3.6
Successfully installed llama-cpp-python-0.3.7
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

 
두근...켜보자!
로드하는데 35.3GB가 필요했다. VRAM이 부족하다면 ctx를 낮춰서 로딩하면 된다.

로딩완료.

 

안녕. 한국인에게 설날은 어떤 의미야?
 
<think> Alright, the user greeted me in Korean and asked about the significance of Lunar New Year (Seol) to Koreans. I need to provide a comprehensive yet concise answer.First, I should explain that Seollal is one of the most important traditional holidays in Korea, marking the beginning of the lunar calendar year. It's not just a day off; it's steeped in cultural and historical significance.
I'll mention its roots in agrarian traditions, how it was a time to give thanks for the past year's harvest and pray for good fortune in the new year. This sets the context for why it's so meaningful.
Next, I should talk about the customs and rituals associated with Seollal. This includes ancestral rites, which are crucial as they reflect respect for ancestors—a core value in Korean culture. Also, the family gatherings are significant; no matter how far apart people live, they make efforts to return home, emphasizing familial bonds.
Another key aspect is the sharing of traditional foods like tteokguk and jeon, which not only bring people together but also symbolize unity and togetherness.
I should highlight the cultural performances such as mask dances and folk games that are often part of the celebrations. These add a festive atmosphere and keep traditions alive for younger generations.
Lastly, it's important to convey how Seollal is a time for introspection and setting intentions for the future. People reflect on the past year and set goals, making it a period of renewal and hope.
I need to wrap this all up in a friendly and informative manner, ensuring that each point flows naturally and covers the essential aspects without being too lengthy. </think>
안녕! 한국인에게 설날(음력설)은 매우 중요한 전통 명절 중 하나입니다. 설날은 음력으로 새해가 시작되는 날을 기념하는 절기로, 그믐달이 끝나고 초하루(1월 1일)에 들어서는 것을 맞이하는 것입니다.
설날은 단순히 휴일 이상의 의미를 지닙니다. 예로부터 농업 사회에서 한 해 동안의 수확을 마치고 새해를 맞이하며, 신을 모시고 가뭄과 병충해 없이 좋은 수확을 기원하는 때였습니다. 지금은 이러한 전통적인 행사에 더불어 가족과 함께 보내는 특별한 시간으로 여겨집니다.
설날에는 다양한 풍습과 의례가 있습니다:
  1. 祖先祀(조상제): 조상을 기리는 제례를 지내며, 고인에게 respects을 표하고 그들의 영혼이 평안하길 기원합니다.
  2. 패티(배부르게 먹기): 가족끼리 모여 전통 음식을 함께 나누어 먹습니다. 대표적인 음식으로는 떡국(tteokguk), 전(jeon), 김치, 설음밥 등이 있습니다.
  3. 가족 회합:无论多远,家人们都会尽量回家团聚,这是强化家庭关系的重要时刻。
  4. 문화 행사: 전통적인 무술(武術), 마당놀이, 탈춤(假面舞) 등의 문화행사도 벌어집니다.
설날은 한국인에게 단순히 휴식의 시간이 아니라 문화와 역사를 되새기며 가족과 함께하는 소중한 시간으로 여겨집니다. 또한, 새해에 건강하고 행복하게 살기를 기원하며, 서로 인사를 나누고 복을 빌어드립니다.

차례를 조상제 같은 이상한 말로 표현하고, 중국어도 표시되는걸 확인했다. 좋은거 맞음?

속도는 이정도 나오는데...aya32b가 더 빠른거 같기도 하고...
aya32b에게 똑같은 질문을 해보면 어떨까?

안녕. 한국인에게 설날은 어떤 의미야?
 
설날은 한국에서 가장 중요한 명절 중 하나로, 음력 1월 1일을 기념하는 날입니다. 설날은 한국 문화에서 다양한 의미와 전통을 가지고 있습니다.
가족과 함께하는 시간: 설날은 가족이 함께 모이는 특별한 행사입니다. 많은 한국인들이 이 시기에 고향으로 돌아가 부모님과 조상들을 모시고, 가족 간의 유대를 강화합니다. 가족들이 모여 전통 음식인 떡국과 다양한 음식을 준비하고, 세배(어른들에게 존경의 인사를 드리는 행위)를 하며 서로의 안부를 묻습니다.
조상 숭배와 전통: 설날은 조상에게 감사와 존경을 표하는 날이기도 합니다. 한국인들은 차례(조상에게 음식을 바치고 예를 올리는 의식)를 지내고, 조상의 묘소를 찾아 성묘를 합니다. 또한, 전통 복장인 한복을 입고, 세배를 하며, 전통 놀이인 윷놀이나 연날리기를 하는 등 다양한 전통 문화를 이어갑니다.
새해의 시작: 설날은 새로운 한 해의 시작을 알리는 날입니다. 한국인들은 설날부터 새해 계획과 목표를 세우고, 복을 기원합니다. 집을 깨끗이 청소하고, 대문을 장식하며, 복조리와 같은 상징적인 물건을 걸어두는 등 새로운 시작을 위한 준비를 합니다.
선물과 세배: 설날에는 어른들에게 세배를 하고, 덕담을 나누는 전통이 있습니다. 또한, 친지들과 선물을 주고받으며 서로의 행복과 건강을 기원합니다. 어린이들은 세배를 하면 세뱃돈을 받기도 합니다.
여행과 문화 행사: 설날 연휴는 한국인들에게 여행을 가거나 문화 행사를 즐길 수 있는 기회이기도 합니다. 많은 사람들이 국내외로 여행을 가고, 다양한 축제와 전통 시장 등을 방문하여 명절 분위기를 만끽합니다.
설날은 한국인들에게 가족의 소중함을 일깨우고, 전통 문화를 계승하며, 새해를 맞이하는 중요한 명절로 자리 잡고 있습니다. 이 시기에 한국인들은 바쁜 일상에서 벗어나 가족과 함께하고, 조상에게 감사를 표하며, 새로운 시작을 준비합니다.

한국어로 모두 표현됐고, 어색한 단어도 쓰지 않았다.
그리고 속도도 훨씬 빨랐다...라이선스를 제외하곤....aya가 나은듯..
중국제는 나와 안맞아...