Auto-HF-To-GGUF / upload.py
HirCoir's picture
Upload 4 files
aab6e33 verified
raw
history blame
3.42 kB
import os
import base64
from huggingface_hub import HfApi, upload_folder
def main():
# Obtener el valor de la variable de entorno REPO_ID
repo_id = os.getenv('REPO_ID')
if repo_id is None:
print("REPO_ID no está definida en las variables de entorno.")
return
# Obtener la variable de entorno TOKEN para autenticarse en Hugging Face
token_base64 = os.getenv('TOKEN')
if token_base64 is None:
print("TOKEN no está definida en las variables de entorno.")
return
# Decodificar el token de base64
token = base64.b64decode(token_base64).decode('utf-8')
# Configuración para la API de Hugging Face
api = HfApi()
# Obtener el nombre de usuario utilizando el token
try:
user_info = api.whoami(token=token)
username = user_info['name']
print(f"Nombre de usuario obtenido: {username}")
except Exception as e:
print(f"Error al obtener el nombre de usuario: {e}")
return
# Eliminar el prefijo 'Usuario/' del valor de REPO_ID para obtener solo el nombre del repositorio
# Se asume que REPO_ID tiene el formato "Usuario/NombreDeRepo"
_, nombre_repo = repo_id.split('/')
# Crear el nuevo nombre del repositorio agregando '-GGUF' al nombre original
new_repo_name = f"{nombre_repo}-GGUF"
# Crear `repo_id` para el nuevo repositorio utilizando el nombre de usuario
new_repo_id = f"{username}/{new_repo_name}"
# Crear el repositorio con el nuevo nombre si no existe
try:
api.create_repo(repo_id=new_repo_id, token=token, private=True)
print(f"Repositorio '{new_repo_id}' creado en Hugging Face como privado.")
except Exception as e:
print(f"El repositorio '{new_repo_id}' ya existe o se produjo un error: {e}")
# Ruta a la carpeta que contiene los archivos para subir
model_gguf_dir = os.getenv('MODEL_GGUF_DIR')
if model_gguf_dir is None:
print("MODEL_GGUF_DIR no está definida en las variables de entorno.")
return
# Renombrar archivos en MODEL_GGUF_DIR reemplazando 'ggml-model-' por el nuevo nombre de repositorio
for archivo in os.listdir(model_gguf_dir):
if archivo.startswith("ggml-model-"):
# Crear el nuevo nombre reemplazando 'ggml-model-' por el nombre del nuevo repositorio
nuevo_nombre_archivo = archivo.replace("ggml-model-", nombre_repo + "-")
# Ruta completa del archivo original y del archivo renombrado
ruta_archivo_original = os.path.join(model_gguf_dir, archivo)
ruta_nuevo_archivo = os.path.join(model_gguf_dir, nuevo_nombre_archivo)
# Renombrar el archivo
os.rename(ruta_archivo_original, ruta_nuevo_archivo)
print(f"Renombrado {archivo} a {nuevo_nombre_archivo}")
# Subir toda la carpeta MODEL_GGUF_DIR al repositorio en Hugging Face
try:
# Usar `upload_folder` para subir toda la carpeta
upload_folder(
folder_path=model_gguf_dir,
repo_id=new_repo_id,
token=token
)
print(f"Todo el contenido de '{model_gguf_dir}' ha sido subido al repositorio '{new_repo_id}' en Hugging Face.")
except Exception as e:
print(f"Error al subir la carpeta '{model_gguf_dir}' al repositorio '{new_repo_id}': {e}")
if __name__ == '__main__':
main()