File size: 3,281 Bytes
aab6e33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a628893
aab6e33
a628893
aab6e33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
import subprocess

# Definir la ruta de la carpeta donde se almacenan los archivos Python
carpeta = os.getcwd()  # Ruta actual de trabajo

# Definir las variables de entorno
model_hf_dir = os.getenv("MODEL_HF_DIR")
model_gguf_dir = os.getenv("MODEL_GGUF_DIR", os.path.join(carpeta, "MODEL_GGUF_DIR"))
quantization_types = os.getenv("QUANTIZATION_TYPES", "Q8_0, Q6_K, Q5_K, Q4_K, Q3_K, Q2_K")

# Comando base para ejecutar los archivos Python
comando_base = "python3"

# Lista de comandos predefinidos
comandos_predefinidos = [
#    f"{comando_base} convert.py {model_hf_dir} --outtype f16",
    f"{comando_base} convert-hf-to-gguf.py {model_hf_dir}",
#    f"{comando_base} convert-lora-to-ggml.py {model_hf_dir}",
]

# Variable para controlar si se encontr贸 un archivo ejecutado exitosamente
ejecucion_exitosa = False

# Ejecutar los comandos predefinidos uno por uno
for comando in comandos_predefinidos:
    try:
        # Ejecutar el comando
        print(f"Ejecutando: {comando}")
        resultado = subprocess.run(comando, shell=True, check=True)
        # Si el comando se ejecuta sin errores, detener el bucle
        ejecucion_exitosa = True
        print(f"Ejecuci贸n exitosa del comando: {comando}")
        break
    except subprocess.CalledProcessError:
        # Si el comando falla, continuar con el siguiente comando predefinido
        print(f"Error al ejecutar {comando}, continuando con el siguiente comando predefinido...")

# Si se ejecut贸 exitosamente, realizar las siguientes acciones
if ejecucion_exitosa:
    # Ruta del archivo ggml-model-f16.gguf en la carpeta MODEL_HF_DIR
    archivo_gguf = os.path.join(model_hf_dir, "ggml-model-f16.gguf")

    # Crear la carpeta MODEL_GGUF_DIR si no existe
    os.makedirs(model_gguf_dir, exist_ok=True)

    # Mover el archivo ggml-model-f16.gguf a MODEL_GGUF_DIR
    nueva_ubicacion_gguf = os.path.join(model_gguf_dir, "ggml-model-f16.gguf")
    os.rename(archivo_gguf, nueva_ubicacion_gguf)
    print(f"Archivo ggml-model-f16.gguf movido a {nueva_ubicacion_gguf}")

    # Obtener los tipos de cuantizaci贸n de QUANTIZATION_TYPES y separarlos por comas
    tipos_cuantizacion = quantization_types.split(",")

    # Ejecutar ./quantize para cada tipo de cuantizaci贸n
    for tipo in tipos_cuantizacion:
        try:
            comando_quantize = f"./quantize {nueva_ubicacion_gguf} {tipo}"
            print(f"Ejecutando: {comando_quantize}")
            # Ejecutar el comando quantize
            subprocess.run(comando_quantize, shell=True, check=True)
        except subprocess.CalledProcessError:
            # Si el comando falla, continuar con el siguiente tipo de cuantizaci贸n
            print(f"Error al ejecutar {comando_quantize}, continuando con el siguiente tipo de cuantizaci贸n...")

# Mostrar los archivos en la carpeta model_hf_dir
print(f"\nContenido de la carpeta {model_hf_dir}:")
contenido = os.listdir(model_hf_dir)
for archivo in contenido:
    print(archivo)

# Mostrar el contenido del archivo de registro "convert.log" si existe
log_path = os.path.join(carpeta, "convert.log")
if os.path.exists(log_path):
    print("\nContenido de convert.log:")
    with open(log_path, 'r') as log_file:
        print(log_file.read())
else:
    print("\nEl archivo convert.log no existe.")