Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Adaptación de Bajo Rango (LoRA) se puede utilizar para ajustar el modelo Phi Silica y mejorar su rendimiento para su caso de uso específico. Con LoRA para optimizar PhiLice, el modelo de lenguaje local de Microsoft Windows, puede lograr resultados más precisos. Este proceso implica entrenar un adaptador de LoRA y, a continuación, aplicarlo durante la inferencia para mejorar la precisión del modelo.
Prerrequisitos
- Ha identificado un caso de uso para mejorar la respuesta de PhiLice.
- Ha elegido un criterio de evaluación para decidir cuál es una "buena respuesta".
- Ha probado las API de PhiLice y no cumplen los criterios de evaluación.
Entrenamiento del adaptador
Para entrenar un adaptador de LoRA para ajustar finamente el modelo Phi Silica con Windows 11, primero debe generar un conjunto de datos que el proceso de entrenamiento utilizará.
Generación de un conjunto de datos para su uso con un adaptador de LoRA
Para generar un conjunto de datos, deberá dividir los datos en dos archivos:
train.json
: se usa para entrenar el adaptador.test.json
: se usa para evaluar el rendimiento del adaptador durante y después del entrenamiento.
Ambos archivos deben usar el formato JSON, donde cada línea es un objeto JSON independiente que representa un solo ejemplo. Cada ejemplo debe contener una lista de mensajes intercambiados entre un usuario y un asistente.
Cada objeto de mensaje requiere dos campos:
content
: el texto del mensaje.role
: ya sea"user"
o"assistant"
, indicando el remitente.
Vea los ejemplos siguientes:
{"messages": [{"content": "Hello, how do I reset my password?", "role": "user"}, {"content": "To reset your password, go to the settings page and click 'Reset Password'.", "role": "assistant"}]}
{"messages": [{"content": "Can you help me find nearby restaurants?", "role": "user"}, {"content": "Sure! Here are some restaurants near your location: ...", "role": "assistant"}]}
{"messages": [{"content": "What is the weather like today?", "role": "user"}, {"content": "Today's forecast is sunny with a high of 25°C.", "role": "assistant"}]}
Sugerencias de entrenamiento:
No se necesita ninguna coma al final de cada línea de ejemplo.
Incluya tantos ejemplos de alta calidad como sea posible. Para obtener los mejores resultados, recopile al menos unas mil muestras de entrenamiento en el
train.json
archivo.El
test.json
archivo puede ser más pequeño, pero debe abarcar los tipos de interacciones que espera que controle el modelo.Cree
train.json
ytest.json
archivos con un objeto JSON por línea, cada uno que contenga una breve conversación de ida y vuelta entre un usuario y un asistente. La calidad y la cantidad de los datos afectarán considerablemente a la eficacia del adaptador de LoRA.
Entrenamiento de un adaptador de LoRA en ai Toolkit
Para entrenar un adaptador de LoRA mediante AI Toolkit para Visual Studio Code, primero necesitará los siguientes requisitos previos necesarios:
Suscripción de Azure con cuota disponible en Azure Container Apps.
- Se recomienda usar GPU A100 o mejores para ejecutar de forma eficaz un trabajo de ajuste preciso.
- Compruebe que tiene cuota disponible en Azure Portal. Si necesita ayuda para encontrar su cuota, consulte Ver cuotas.
Tendrá que instalar Visual Studio Code si aún no lo tiene.
Para instalar AI Toolkit para Visual Studio Code:
Una vez descargada la extensión AI Toolkit, podrá acceder a ella desde el panel de la barra de herramientas izquierdo dentro de Visual Studio Code.
Vaya a Herramientas>Ajuste fino
Escriba un nombre de proyecto y una ubicación del proyecto.
Seleccione "microsoft/phi-silica" en el catálogo de modelos.
Seleccione "Configurar proyecto".
Seleccione la versión más reciente de PhiLice.
Bajo Datos> y Nombre del conjunto de datos de entrenamiento y de prueba, seleccione sus
train.json
ytest.json
archivos.Seleccione "Generar proyecto" - se abrirán nuevas ventanas de VS Code.
Asegúrese de que el perfil de carga de trabajo correcto está seleccionado en el archivo bicep para que el trabajo de Azure se implemente y se ejecute correctamente. Agregue lo siguiente en
workloadProfiles
:{ workloadProfileType: 'Consumption-GPU-NC24-A100' name: 'GPU' }
Seleccione "Nuevo trabajo de ajuste fino" y escriba un nombre para el trabajo.
Aparecerá un cuadro de diálogo en el que se le pedirá que seleccione la cuenta Microsoft con la que acceder a la suscripción de Azure.
Una vez seleccionada la cuenta, deberá seleccionar un grupo de recursos en el menú desplegable de la suscripción.
Ahora verá que el trabajo de ajuste correcto se ha iniciado correctamente, junto con un estado de trabajo. Una vez completado el trabajo, tendrá la opción de descargar el adaptador de LoRA recientemente entrenado seleccionando el botón "Descargar". Normalmente, tarda un promedio de 45 a 60 minutos en completarse un trabajo de ajuste preciso.
Inferencia
El entrenamiento es la fase inicial en la que el modelo de IA aprende de un conjunto de datos grande, reconociendo patrones y correlaciones. Por otro lado, la inferencia es la fase de aplicación en la que un modelo entrenado (PhiLice en nuestro caso) usa nuevos datos (nuestro adaptador de LoRA) para tomar predicciones o decisiones con las que generar una salida más personalizada.
Para aplicar el adaptador LoRA entrenado:
Use la aplicación AI Dev Gallery. Ai Dev Gallery es una aplicación que permite experimentar con modelos y API locales de inteligencia artificial, además de ver y exportar código de ejemplo. Obtenga más información sobre ai Dev Gallery.
Una vez que haya instalado AI Dev Gallery, abra la aplicación y seleccione la pestaña "API de IA" y, a continuación, seleccione "PhiLice LoRA".
Seleccione el archivo del adaptador. La ubicación predeterminada para estos que se van a almacenar es:
Desktop
/lora_lab
/trainedLora
.Completa los campos "System Prompt" (Indicación del Sistema) y "Prompt" (Indicación). A continuación, seleccione "Generar" para ver la diferencia entre PhiLice con y sin el adaptador loRA.
Experimente con el Prompt y el System Prompt para ver cómo esto afecta el resultado.
Seleccione "Exportar ejemplo" para descargar una solución independiente de Visual Studio que solo contenga este código de ejemplo.
Generar respuestas
Una vez que haya probado el nuevo adaptador de LoRA mediante ai Dev Gallery, puede agregar el adaptador a la aplicación de Windows mediante el ejemplo de código siguiente.
using Microsoft.Windows.AI.Text;
using Microsoft.Windows.AI.Text.Experimental;
// Path to the LoRA adapter file
string adapterFilePath = "C:/path/to/adapter/file.safetensors";
// Prompt to be sent to the LanguageModel
string prompt = "How do I add a new project to my Visual Studio solution?";
// Wait for LanguageModel to be ready
if (LanguageModel.GetReadyState() == AIFeatureReadyState.NotReady)
{
var languageModelDeploymentOperation = LanguageModel.EnsureReadyAsync();
await languageModelDeploymentOperation;
}
// Create the LanguageModel session
var session = LanguageModel.CreateAsync();
// Create the LanguageModelExperimental
var languageModelExperimental = new LanguageModelExperimental(session);
// Load the LoRA adapter
LowRankAdaptation loraAdapter = languageModelExperimental.LoadAdapter(adapterFilePath);
// Set the adapter in LanguageModelOptionsExperimental
LanguageModelOptionsExperimental options = new LanguageModelOptionsExperimental
{
LoraAdapter = loraAdapter
};
// Generate a response with the LoRA adapter provided in the options
var response = await languageModelExperimental.GenerateResponseAsync(prompt, options);
Inteligencia artificial responsable: riesgos y limitaciones del ajuste preciso
Cuando los clientes ajustan Phi Silica, puede mejorar el rendimiento y la precisión del modelo en tareas y dominios específicos, pero también puede introducir nuevos riesgos y limitaciones que deben considerar. Algunos de estos riesgos y limitaciones son:
Calidad y representación de los datos: la calidad y la representatividad de los datos utilizados para el ajuste fino pueden afectar al comportamiento y las salidas del modelo. Si los datos son ruidosos, incompletos, obsoletos o si contienen contenido dañino como estereotipos, el modelo puede heredar estos problemas y producir resultados inexactos o dañinos. Por ejemplo, si los datos contienen estereotipos de género, el modelo puede amplificarlos y generar lenguaje sexista. Los clientes deben seleccionar y preprocesar cuidadosamente sus datos para asegurarse de que sea relevante, diverso y equilibrado para la tarea y el dominio previstos.
Solidez y generalización del modelo: la capacidad del modelo para controlar diversas y complejas entradas y escenarios puede disminuir después del ajuste fino, especialmente si los datos son demasiado estrechos o específicos. El modelo puede sobreajustar los datos y perder parte de sus conocimientos y funcionalidades generales. Por ejemplo, si los datos son solo sobre deportes, el modelo puede tener dificultades para responder preguntas o generar texto sobre otros temas. Los clientes deben evaluar el rendimiento y la solidez del modelo en una variedad de entradas y escenarios y evitar el uso del modelo para tareas o dominios que están fuera de su ámbito.
Regurgitación: aunque los datos de entrenamiento no estén disponibles ni para Microsoft ni para ningún cliente de terceros, los modelos mal afinados pueden regurgitar o repetir directamente los datos de entrenamiento. Los clientes son responsables de eliminar cualquier información de identificación personal (PII) o información protegida de sus datos de entrenamiento y deben evaluar sus modelos personalizados para detectar sobreajustes o respuestas de calidad inferior. Para evitar la regurgitación, se recomienda a los clientes proporcionar conjuntos de datos grandes y diversos.
Transparencia y explicación del modelo: la lógica y el razonamiento del modelo pueden ser más opacos y difíciles de entender después del ajuste preciso, especialmente si los datos son complejos o abstractos. Un modelo ajustado puede producir salidas inesperadas, incoherentes o opuestas, y es posible que los clientes no puedan explicar cómo o por qué llegó el modelo a esas salidas. Por ejemplo, si los datos están relacionados con términos legales o médicos, el modelo puede generar salidas que son inexactas o engañosas, y es posible que los clientes no puedan comprobarlos o justificarlos. Los clientes deben supervisar y auditar las salidas y el comportamiento del modelo y proporcionar información clara y precisa e instrucciones a los usuarios finales del modelo.