Saltar al contenido principal
octubre 1, 2024

Modelos personalizados para GitHub Copilot

La opción de modelos personalizados para GitHub Copilot está disponible en versión beta pública, lo que permitirá a los desarrolladores ajustar Copilot para comprender mejor las prácticas de codificación únicas de cada organización y alinearse con ellas.

Esta nueva capacidad mejora la relevancia y la precisión de las sugerencias de código en los proyectos, así que hemos recopilado los puntos más importantes a tener en cuenta y las claves para que le saques el máximo partido desde ya.

¿Qué son los modelos personalizados?

Los “custom models” son LLMs que se han perfeccionado utilizando las bases de código de una organización. Al entrenar el modelo en las bibliotecas patentadas, lenguajes especializados y patrones de codificación internos, Copilot podrá ofrecer sugerencias de código que son más sensibles al contexto y se adaptan a las necesidades de cada caso.

Ahora se puede crear un modelo personalizado usando tus propios repositorios de GitHub, y también se puede habilitar la recopilación de fragmentos de código y telemetría de las indicaciones y respuestas de Copilot de otros desarrolladores, con el fin de ajustar aún más el modelo.

Así se alinean las sugerencias de Copilot con las prácticas de codificación de cada desarrolladore, lo que ayuda a que sean más relevantes y precisas. Esto se traduce en menor tiempo dedicado a revisar código, depuración y ajustes manuales de código, y, por tanto, mayor productividad y mejor calidad del código.

¿Cuándo utilizar modelos personalizados?

Como en el resto de procesos, hay una herramienta para cada momento. En este caso, deberías considerar usar modelos personalizados en los siguientes escenarios:

  • Mejorar el uso de bibliotecas y API: un modelo puede priorizar las bibliotecas y API personalizadas para sus sugerencias, lo que facilita el seguimiento de estándares internos.
  • Mejorar la compatibilidad con lenguajes especializados: los ajustes precisos ayudan a Copilot a comprender mejor los lenguajes menos comunes o exclusivos, reduciendo la fricción y mejorando la productividad.
  • Adaptar a bases de código en evolución: al entrenar periódicamente tu base de código, también te puedes asegurar de que Copilot se mantenga actualizado con los patrones de codificación más recientes, de modo que continúe brindando sugerencias relevantes y precisas.

Crear un modelo personalizado en GitHub Copilot

Al estar aún en su versión beta, solo una organización de una empresa puede crear un modelo personalizado.

Una vez asignado como propietario de la organización, se puede elegir cuáles repositorios se van a utilizar para entrenar el modelo. Se puede entrenar el modelo en uno, varios o todos los repositorios de la organización, y se hace en el contenido de las ramas predeterminadas de los repositorios seleccionados.

El modelo personalizado se utilizará para generar sugerencias de finalización de código en todos los tipos de archivos, independientemente de si ese tipo de archivo se utilizó para el entrenamiento. Y también se puede elegir si se deben usar datos de telemetría.

Una vez iniciada, la creación de un modelo personalizado tardará varias horas en completarse. Cuando se complete el proceso, se notificará por email, y si falla, Copilot continuará usando el modelo actual para generar sugerencias de finalización de código.

Cuando se haya creado correctamente el modelo, todos los usuarios administrados de la empresa que tengan acceso a Copilot Enterprise de la organización en la que se haya implementado, comenzarán a ver las sugerencias de finalización de código generadas por el modelo personalizado.

Para comprobar la eficacia del modelo, es recomendable evaluar el uso y los niveles de satisfacción de las sugerencias de finalización de código de GitHub Copilot antes y después de la implementación de un modelo. Para ello, se puede usar API REST o realizar encuetas a los desarrolladores sobre su percepción y satisfacción con las sugerencias del modelo.

Poner en marcha el modelo personalizado

A continuación, repasamos los pasos a seguir para configurar un LLM personalizado:

  1. En la esquina superior derecha de GitHub, selecciona “Tus organizaciones” y después a “Configuración”.
  2. En la barra lateral izquierda, haz clic en “Copilot” y luego en “Modelo personalizado”.
  3. En la página “Modelos personalizados”, clica en “Entrenar un nuevo modelo personalizado” y luego en “Seleccionar repositorios” y elige entre todos los repositorios o seleccionados.
  4. Si eliges repositorios seleccionados, selecciona los que quieres usar para la capacitación y luego en “Aplicar”.
  5. De manera opcional, si prefieres entrenar a tu modelo solo con código escrito en determinados lenguajes de programación, ve a “Especificar lenguajes” y escribe el nombre de un lenguaje que quieras incluir. Selecciona el que desees de la lista que se muestra y repite el proceso por cada lenguaje que quieras incluir.
  6. Haz clic en “Crear nuevo modelo personalizado”.

*Extra: Para mejorar el rendimiento del modelo, selecciona la casilla de verificación denominada “Incluir datos de indicaciones y sugerencias”. Así permitirás que Copilot recopile datos de las solicitudes enviadas por el usuario y las sugerencias de finalización de código que se generaron. Una vez se hayan recopilado datos suficientes, Copilot los utilizará como parte del proceso de entrenamiento del modelo, lo que permitirá producir un modelo más eficaz.

Aspectos a tener en cuenta

Podrás consultar el progreso de la creación del modelo en el botón “Detalles de entrenamiento” y también deberás tener en cuenta que el entrenamiento puede fallar por varias razones, como:

  • No hay suficientes datos o no son representativos, lo que hace que el ajuste fine sea inestable.
  • Si los datos no son lo suficientemente diferentes de los datos públicos con los que se entrenó el modelo base, el entrenamiento puede fallar o la calidad de las sugerencias de finalización de código delo modelo personalizado puede mejorarse solo marginalmente.
  • Un paso de preprocesamiento de datos puede encontrar tipos y formatos de archivos inesperados que provoquen un error. Por ello, la solución puede ser especificar solo ciertos tipos de archivos para el entrenamiento.

Por otro lado, puedes actualizar o eliminar el modelo personalizado desde la página de configuración de la organización. Al volver a entrenar el modelo, se actualiza para incluir cualquier código nuevo que se haya agregado a los repositorios que se seleccionaron para entrenar. Lo podrás volver a entrenar una vez por semana.

Cómo podemos ayudarte desde Plain Concepts

GitHub Copilot está teniendo un gran impacto en la forma en la que los desarrolladores y las organizaciones crean software. Según una investigación de Accenture, los desarrolladores que usan Copilot experimentaron un aumento del 8% en las solicitudes de incorporación de cambios, un aumento del 15% en las tasas de fusión y un aumento del 84% en la tasa de éxito de la creación de versiones.

El estudio también muestra que el 90% de los desarrolladores se sentían más satisfechos con su trabajo cuando usaban GitHub Copilot y el 95% dijo que disfrutaban más de la codificación con esta ayuda.

Desde Plain Concepts también hemos hecho una prueba piloto entre nuestro equipo para comprobar su eficacia, y puedes ver los resultados y conclusiones iniciales aquí.

Además, creemos que los modelos personalizados representan el siguiente gran salto en la codificación, pues ahora se extienden estas capacidades directamente a la experiencia de finalización de código en línea.

Al entrenar Copilot en tus bases de código privadas y también incorporar telemetría, los modelos personalizados permiten que Copilot se adapte al entorno de codificación único de tu organización en tiempo real. Además, se han tomado medidas fundamentales para incorporar medidas de seguridad de datos para modelos optimizados a la escala que necesitan las empresas.

Los datos de cada empresa siempre serán privados y cada compañía es la única dueña de ellos, nunca se utilizarán para entrenar modelos de otros clientes. De hecho, cuando se inicia un proceso de entrenamiento, los datos de su repositorio y los datos de telemetría se tokenizan y se copian temporalmente en la canalización de entrenamiento de Azure.

Algunos de estos datos se utilizan para el entrenamiento, mientras que otro conjunto se reserva para la validación y la evaluación de calidad. Una vez que se completa el proceso de ajuste, el modelo se somete a una serie de evaluaciones de calidad para garantizar que supere al modelo de referencia.

Si el modelo pasa los controles de calidad, se implementa en OpenAI. Esta configuración nos permite alojar varios modelos LoRA a escala y, al mismo tiempo, mantenerlos aislados entre sí. Una vez finalizado el proceso, los datos de entrenamiento temporales se eliminan y el flujo de datos se reanuda a través de los canales de inferencia normales.

Por parte de Plain Concepts, si necesitas contar con un partner para descubrir todo el potencial de GitHub Copilot, te lo ponemos fácil:

  • Somos el primer partner en España acreditado por GitHub.
  • Llevamos más de 17 años trabajando en la cultura Agile referente en la comunidad DevOps.
  • Contamos con un equipo especializado compuesto por más de 350 ingenieros senior en App Innovation y DevOps.
  • Acreditados como AMMP.
  • DevSecOps con MVPs.

 

Además, no nos quedamos en las certificaciones y te ofrecemos un exclusivo GitHub Adoption Framework para que encuentres el servicio que mejor se ajuste a tus necesidades, de la mano de los mejores expertos. ¡Contáctanos para saber más!

Elena Canorea
Autor
Elena Canorea
Communications Lead