abetlen / abetlen/llama-cpp-python

The new shared library causes conflicts if more than 1 variant of llama-cpp-python is imported

Abierto
#1,575 10 comentarios 5 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
10.6k
Forks
1.4k
Merge medio
5 h 23 min
PR fusionados (30 d)
5

Descripción

The `ctypes.CDLL` call under https://github.com/abetlen/llama-cpp-python/blob/7e20e346bd49cc8f0031eb053fe879a38c777b6f/llama_cpp/llama_cpp.py#L75 loads symbols in the global scope. In my project, it is possible to load 3 different versions of llama-cpp-python:

* CUDA
* CUDA + tensorcores (without `-DGGML_CUDA_FORCE_MMQ=ON`)
* CPU

Due to the shared library, when one of the libraries is already imported and the user switches to another one, undefined behavior happens, such as the CPU version having BLAS=1 in its logs.

Can this be prevented? I think that it may be impossible to work around this issue on my side. I have tried `importlib.reload` and it didn't work.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

El issue está en llama_cpp/llama_cpp.py, línea 75, donde ctypes.CDLL carga globalmente una biblioteca compartida. Examina el mecanismo de carga de bibliotecas y cómo se distinguen las distintas variantes de compilación (CUDA, CPU). Busca pruebas existentes o ejemplos de carga de múltiples bibliotecas. La solución probablemente implique aislar los handles de biblioteca por variante, posiblemente mediante el uso de flags de dlopen o un loader personalizado. Comprueba el sistema de compilación de llama.cpp para ver los flags de las variantes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
c, python
Área
backend, build-system
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.