우리가 알고 있듯이.. llama.cpp는 비전 (vision) 또는 기타 멀티미디어 기능을 메인 가중치 (weights)와 분리합니다. 반대로, 훈련된 모델의 기능이 출시 시점에 제거될 수도 있습니다.
만약 그것들을 다시 집어넣을 방법이 있다면 어떨까요?
Mistral은 이제 pixtral과 medium 비전 인코더 (vision encoders)를 모두 출시했습니다. 이전 모델들의 토크나이저 (tokenizers)에는 관련 부분들이 포함되어 있습니다.
"10": {
"content": "[IMG]",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
제가 꽤 좋아하는 모델인 Behemoth-X를 예로 들어보겠습니다.
--mmproj Pixtral-Large-Instruct-2411-hf.mmproj-f16.gguf \\
--no-mmproj-offload \\
이 모델은 분명히 이미지를 보고 있습니다.. 하지만 무언가 고장 났습니다.
로그는 다음과 같이 알려줍니다:
[/INST]y'know what??? shut up</s>[INST][IMG_END][/INST]
아마도 [IMG_END]에 대해 훈련되지 않은 것 같습니다. 매우 불행한 일이죠. 하지만 우리에게는 소스 코드가 있으니 mtmd.cpp를 수정할 수 있습니다.
} else if (proj == PROJECTOR_TYPE_PIXTRAL) {
// https://github.com/huggingface/transformers/blob/1cd110c6cb6a6237614130c470e9a902dbc1a4bd/docs/source/en/model_doc/pixtral.md
//img_end = "[IMG_END]";
img_end = "\n";
대안으로, 문제가 되는 토큰을 다른 ID로 변경하기 위해 모델을 다시 변환할 수도 있습니다. 어떤 방식이든, 이제 더 이상 턴 (turn)을 놓치지 않습니다.
https://i.ibb.co/P7x6z31/good-image2.png https://i.ibb.co/Pn29ML2/good-image.png
완벽하냐고요? 아니요. 하지만 devstral2나 여러분이 비전 기능을 원하는 다른 모델에서 더 잘 작동할까요? 그럴 가능성이 매우 높습니다.
31b gemma는 토크나이저에 ASR (자동 음성 인식) 부분을 포함하고 있습니다...
"audio_token": "<|audio|>",
"backend": "tokenizers",
"boa_token": "<|audio>",
"boi_token": "<|image>",
"bos_token": "<bos>",
"eoa_token": "<audio|>",
"eoc_token": "<channel|>",
"eoi_token": "<image|>",
"eos_token": "<eos>",
"eot_token": "<turn|>,"