Giter Club home page Giter Club logo

pps-agustin_conti_2023's Introduction


Logo

PPS Agustin Aguilera Conti

Despliegue de plataforma para desarrollo, entrenamiento e implementación de modelos de machine learning en cloud computing
Mirá la documentación acá »

Tabla de contenidos
  1. Sobre el proyecto
  2. Para comenzar
  3. Uso
  4. Roadmap
  5. Contribuir
  6. Licencia
  7. Contacto
  8. Referencias

Sobre el proyecto

MLOps Header

Como objetivo general de este proyecto buscamos explorar, evaluar un conjunto de tecnologías esenciales que permiten la implementación exitosa de prácticas de Machine Learning Operations (MLOps) en el entorno universitario, haciendo hincapié en la reutilización, la reproducibilidad y la escalabilidad.

La implementación de sistemas de MLOps se ha vuelto cada vez más crucial, ya que proporciona la infraestructura necesaria para respaldar a los científicos y expertos en la universidad en su búsqueda de soluciones basadas en Machine Learning. Facilita la gestión eficiente del ciclo de vida de los modelos, desde su desarrollo y entrenamiento hasta su despliegue y monitoreo, permitiendo así la reutilización de los recursos, la reproducibilidad de los resultados y la escalabilidad de las soluciones.

Dentro de este documento se encontrarán las bases necesarias para poder contribuir al proyecto, crear el entorno de trabajo y realizar una prueba de lo estudiado. Para mayor información se puede consultar la documentación completa.

Back to Top

Componentes

Se listan a continuación las tecnologías utilizadas.

  • Terraform
  • Ansible
  • Kubernetes
  • Docker
  • Python
  • Tensorflow
  • Pytorch

Back to Top

Para comenzar

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisitos

Aca debo listar todo lo que se debe descargar para luego poder instalar y hacer funcionar el proyecto

apt install some-library

Instalación

Dejamos un ejemplo del clonado e instalación de dependencias del proyecto

  1. Clonar el repositorio

    git clone https://github.com/your_username_/Project-Name.git
  2. Some instruction

    ...

Back to Top

Uso

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

Para mas ejemplos e información, por favor diríjase a la Documentación.

Back to Top

Roadmap

  • Documentos inicio PPS

  • Selección del Workflow de GIT

  • Armar el Readme del Repo, contexto y como reproducir el ambiente

  • Búsqueda y revisión bibliográfica. Contextualización

  • Investigación y evaluación de la herramienta

  • Diseño e implementación de la infraestructura basada en Kubeflow

  • Desarrollo de pipelines de flujo de trabajo

  • Integración de modelos de Machine Learning en los pipelines

  • Pruebas y ajustes de los pipelines

  • Redacción de documentación e informe

Mire el proyecto para el listado completo de actividades y el checkeo de su estado actual.

Back to Top

Contribuir

Flujo de trabajo

El proceso que seguiremos implica utilizar la rama main como la rama de producción del proyecto. Cualquier nueva funcionalidad o corrección de errores se realizará creando nuevas ramas.

Para incorporar una función en la rama main, simplemente se crea un "PR" (Pull Request), que deberá ser aprobado por algún colaborador, cualquier colaborador puede hacerlo, o bien, si no requiere revisión, puede ser aceptado por quien esté incluyendo la funcionalidad.

Es crucial que el nombre de las ramas creadas sea lo más descriptivo posible. Por ejemplo, si trabajamos en una nueva funcionalidad relacionada con la API, la rama se debe llamar feature-api. En el caso de tratarse de la corrección de un error en el código de la API, la llamaremos fix-api.

Además, se contarán con ramas específicas para la documentación con Mkdocs, denominadas docs, y para el README, que se llamará readme.

La duración de cada rama dependerá de la necesidad de trabajo. Por ejemplo, las ramas readme y docs podrían mantenerse en remoto sin eliminarse durante todo el trabajo. Luego, se pueden añadir nuevos commits a ellas y volver a crear un "PR". En contraste, al trabajar con partes de la base de datos o la API, las ramas deberán durar hasta la finalización de la funcionalidad, para luego eliminarse del repositorio remoto y continuar con una nueva rama para cualquier otra nueva característica.

Creación y publicación de ramas

Para crear una nueva rama desde tu entorno local:

git checkout -b <nombre-de-la-nueva-rama> <nombre-de-la-rama-origen>

Para publicar la nueva rama en el repositorio remoto:

# en <nombre-de-la-nueva-rama>
git push --set-upstream origin <nombre-de-la-nueva-rama>

Solicitud de PRs

Para solicitar un PR, recomendamos realizarlo directamente desde la interfaz de GitHub.

Crear una PR - Paso 1/2

Crear una PR - Paso 2/2

Finalmente, haz clic en "Create pull request" y espera la aprobación.

Commits convencionales

Los commits convencionales nos permiten mantener la organización al realizar los commits y facilitan la creación de releases de forma automatizada.

Se basan en el uso de palabras clave al inicio del mensaje de cada commit, de la siguiente manera:

  • feat(tema de la modificación): Breve explicación: Para cambios significativos o nuevas características.

  • chore(tema de la modificación): Breve explicación: Para cambios menores, como modificar una IP para una prueba local.

  • fix(tema de la modificación): Breve explicación: Para correcciones pequeñas, como agregar acentos en la documentación.

Ejemplo:

feat(vagrant): Añadiendo archivo de configuración de Vagrant

Además, es importante sectorizar por tema los commits. Por ejemplo, si tu commit modifica 3 archivos relacionados con la API y uno con la documentación, al realizar el commit de la API, feat(API), no agregaremos a la etapa de preparación el archivo de documentación, solo los 3 archivos de la API.

Eliminación de ramas del repositorio remoto y sincronización del repositorio local

Para eliminar las ramas obsoletas del repositorio remoto, se realizará a través de la interfaz de GitHub, en la sección Branches.

Eliminar rama - Paso 1/3

Luego, se accede a ver todas las ramas:

Eliminar rama - Paso 2/3

Finalmente, se hace clic para eliminar la rama:

Eliminar rama - Paso 3/3

Una vez eliminada la rama, si se desea, se puede sincronizar el entorno local siguiendo estos pasos:

  • Listar las ramas que pueden ser eliminadas del entorno local:

    git remote prune origin --dry-run
  • Limpiar las referencias locales:

    git remote prune origin
  • Verificar el estado de las ramas locales:

    git branch -a

    Se comprobará que la rama remota ha sido eliminada, pero la rama local aún permanece.

  • Eliminar la rama local:

    git branch -d <nombre-de-la-rama-a-borrar>

Con estos pasos, el entorno local estará "sincronizado" con el remoto.

Uso del entorno virtual de Python - Poetry

Para el entorno virtual de Python del proyecto, utilizamos Poetry. Esto nos permite trabajar con las mismas dependencias. Una vez instalado en tu PC y situado en el directorio del proyecto:

  • Para añadir nuevas dependencias:

    poetry add <nombre-de-la-dependencia>
  • Para ejecutar un programa utilizando las dependencias del entorno:

    poetry run <comando-para-ejecutar-nuestro-programa>

Siempre utilizaremos el mismo entorno virtual. No se creará uno por carpeta, sino que todas las ejecuciones y adiciones de dependencias serán sobre el mismo archivo .toml creado en el directorio del proyecto.

Documentación temporal

Cada vez que se cree una nueva funcionalidad, en la rama correspondiente y en el directorio respectivo, se debe crear una documentación temporal. Esto se realiza para evitar la pérdida de información al trasladarla a la documentación general en Mkdocs.

La idea es crear un archivo Markdown dentro del directorio en el que se está trabajando con el siguiente nombre: temp_docs_<nombre-de-la-funcionalidad-o-corrección>.md.

Este archivo será temporal y servirá para que aquellos que trabajen en la documentación de Mkdocs tengan toda la información a su alcance.

Este archivo puede publicarse en la rama main. Solo se eliminará una vez se haya trasladado a la documentación general.

Back to Top

Licencia

Este proyecto se distribuye bajo los términos de la Licencia Pública General de GNU, versión 3.0 (GNU General Public License, version 3.0). Consulta el archivo LICENSE para obtener detalles completos.

Resumen de la Licencia

La Licencia Pública General de GNU, versión 3.0 (GNU GPL-3.0), es una licencia de código abierto que garantiza la libertad de uso, modificación y distribución del software bajo los términos estipulados en la licencia. Requiere que cualquier software derivado se distribuya bajo los mismos términos de la GPL-3.0. Consulta el archivo LICENSE para más información sobre los términos y condiciones.

Aviso de Copyright

El aviso de copyright para este proyecto se encuentra detallado en el archivo LICENSE.

Back to Top

Contacto

Agustín Aguilera Conti - aagustinconti.com.ar - [email protected]

Link del proyecto: https://github.com/danunziata/pps-agustin_conti_2023/

Back to Top

Referencias

Encontrá información importante en:

Back to Top

pps-agustin_conti_2023's People

Contributors

aagustinconti avatar danunziata avatar

Stargazers

 avatar  avatar

Watchers

Fernando avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.