Integración de Modelos de Lenguaje Grandes Qwen2 con .NET 8

Este artículo detalla el proceso de integración de modelos de lenguaje grandes (LLMs) como Qwen2 dentro de proyectos .NET 8, haciendo uso de la herramienta de gestión de modelos Ollama.

Requisitos del Entorno

  • Visual Studio 2022 Preview
  • .NET 8
  • Windows 10 Enterprise

Configuración de Ollama y Qwen2

  1. Descarga e Instalación de Ollama

    Obtenga Ollama desde su repositorio oficial en GitHub: https://github.com/ollama/ollama. Una vez instalado, Ollama se ejecutará como un servicio, visible en la bandeja del sistema con un ícono de alpaca.

  2. Ejecución del Modelo Qwen2

    La variedad de modelos disponibles en Ollama se puede consultar en: https://ollama.com/library. Para Qwen2, visite: https://ollama.com/library/qwen2.

    Abra una terminal y ejecute los siguientes comandos:

    
    # Descarga el modelo Qwen2 (ejemplo: versión 0.5b)
    ollama pull qwen2:0.5b
    # Inicia una sesión interactiva con el modelo
    ollama run qwen2:0.5b
    
    

    Los modelos descargados se almacenan localmente, típicamente en la ruta C:\Users\[TuUsuario]\.ollama.

    Tras una ejecución exitosa, podrá interactuar con el modelo directamente en la consola.

Integración en Proyectos .NET

  1. Instalación del Paquete NuGet OllamaSharp

    Añada el paquete OllamaSharp a su proyecto a través de NuGet. Encuentre más detalles en su repositorio: https://github.com/awaescher/OllamaSharp.

  2. Implementación del Código

    El siguiente fragmento de código muestra un ejemplo básico de interacción con Ollama desde un proyecto Web API. La implementación específica puede variar según sus necesidades.

    
    using OllamaSharp;
    
    public class QwenService
    {
       private readonly OllamaApiClient _ollamaClient;
    
       public QwenService(string ollamaUrl = "http://localhost:11434")
       {
           _ollamaClient = new OllamaApiClient(ollamaUrl);
       }
    
       public async Task<string> GetCompletionAsync(string prompt, string modelName = "qwen2:0.5b")
       {
           var response = await _ollamaClient.Chat(modelName, new List<Message>
           {
               new Message("user", prompt)
           });
           return response.Content;
       }
    
       // Ejemplo de uso:
       // var service = new QwenService();
       // var result = await service.GetCompletionAsync("Explícame el concepto de redes neuronales.");
       // Console.WriteLine(result);
    }
    
    

    Consulte la documentación de OllamaSharp para obtener más ejemplos y configuraciones avanzadas.

Interfaz Web (WebUI)

Para una experiencia de usuario más amigable al interactuar con Ollama localmente, existen interfaces web preconstruidas. Un ejemplo popular es ollama-webui-lite. Puede encontrarlo y desplegarlo fácilmente siguiendo las instrucciones en su repositorio de GitHub: https://github.com/ollama-webui/ollama-webui-lite.

Ajuste Fino (Fine-Tuning) Local

Para aquellos interesados en realizar un ajuste fino de los modelos localmente, se pueden seguir los siguientes enfoques:

  1. Instalación de Anaconda

    Descargue e instale Anaconda desde su sitio oficial: https://www.anaconda.com/download/success.

  2. Instalación de Dependencias

    Abra Anaconda Prompt y ejecute los siguientes comandos para crear y activar un nuevo entorno, e instalar las bibliotecas necesarias:

    
    # Crear un nuevo entorno virtual con Python 3.12
    conda create -n PY312 python=3.12
    # Activar el entorno
    conda activate PY312
    # Instalar paquetes esenciales
    pip install transformers datasets peft accelerate modelscope swanlab
    pip install torch torchvision
    
    

    La instalación de estos paquetes puede tomar algún tiempo.

  3. Descarga del Modelo Base

    Utilice Git LFS para clonar el repositorio del modelo Qwen2:

    
    git lfs install
    git clone https://www.modelscope.cn/qwen/Qwen2-0.5B.git
    # Si la clonación falla, intente con 'git pull' dentro del directorio clonado
    cd Qwen2-0.5B
    git lfs pull
    
    
  4. Configuración de JupyterLab

    Para un entorno de desarrollo interactivo, instale y configure JupyterLab:

    Instalación:

    
    pip install jupyterlab
    
    

    Inicio:

    
    jupyter lab
    
    

    Para mejorar la experiencia en español, instale el paquete de idioma:

    
    pip install jupyterlab-language-pack-zh-CN
    
    

    Después de la instalación, reinicie JupyterLab y ajuste la configuración de idioma en la interfaz.

  5. Ejecución del Script de Entrenamiento

    Desde Anaconda Prompt, navegue hasta el directorio de su script de ajuste fino y ejecútelo:

    
    python ruta/a/tu/script/Qwen2-0.5B-train.py
    
    

    Durante la ejecución, se le pedirá una clave para Swanlab. Tenga en cuenta que copiar y pegar puede ser problemático; intente usar el clic derecho del mouse.

    El seguimiento del progreso puede ser lento, especialmente con hardware de gráficos integrado. Los resultados y métricas se pueden visualizar en https://swanlab.cn/.

Solución de Problemas Comunes

Problema: OSError: [WinError 126] The specified module could not be found. Error loading "D:\anaconda3\envs\PY312\Lib\site-packages\torch\lib\fbgemm.dll" or one of its dependencies.

Este error a menudo se relaciona con dependencias faltantes de la librería torch. Puede intentar resolverlo descargando la versión correcta de fbgemm.dll desde fuentes confiables (por ejemplo, https://www.dllme.com/dll/files/libomp140_x86_64/versions) y copiándola al directorio System32 de su sistema.

Etiquetas: dotnet .net 8 C# LLM Qwen2

Publicado el 7-10 20:58