## Temas selectos de modelado (aka optimización 2/avanzada) de la Maestría en Ciencia de Datos (MCD) --- ## Descripción Es una continuación directa de los temas vistos en el curso de optimización del semestre de otoño. ---- ## Descripción Los temas los pueden encontrar en el [libro de optimización](https://itam-ds.github.io/analisis-numerico-computo-cientifico/) el cual revisamos durante el semestre de otoño. Tal libro continuaremos revisando en este semestre de primavera. Este libro está creado a partir del [repo](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/) del curso. <!-- .slide: style="font-size: 28px;" --> ---- ## Descripción ¿Cuáles temas revisaremos en optimización 2? * Optimización en redes su relación con programación lineal y temas sobre dualidad. * Generalización de algoritmos para resolver problemas CIECO (*Constrained Inequality and Equality Convex Optimization*). :point_right: la programación lineal es un ejemplo de CIECO. <!-- .slide: style="font-size: 28px;" --> ---- * Optimización de código: * Perfilamiento de código. * Uso de paquetes para compilación a C (Cython y Rcpp). * Operaciones BLAS nivel 1, 2 y 3. * Cómputo en paralelo en la CPU y en la GPU. * Temas selectos (algunos de los siguientes, depende del tiempo que tengamos): * Métodos basados en componentes estocásticas. * Métodos de memoria limitada. * Aproximaciones de rango bajo. * Métodos Cuasi-Newton. * Descenso por coordenadas. * Máquina de Soporte Vectorial distribuida. * Métodos basados en espacios de Krylov. <!-- .slide: style="font-size: 28px;" --> ---- ## Descripción Los temas anteriores están enmarcados dentro del [análisis numérico/cómputo científico](https://itam-ds.github.io/analisis-numerico-computo-cientifico/1.computo_cientifico/1.1/Analisis_numerico_y_computo_cientifico.html) que estudia algoritmos para resolver problemas de mate que involucran cantidades continuas. Varios de los algoritmos se intersectan con los desarrollados dentro del área de [investigación de operaciones](https://en.wikipedia.org/wiki/Operations_research). ---- ## Descripción :point_right: Los algoritmos que revisamos son clásicos y los utilizados hoy en día en el cálculo numérico, aprendizaje de máquina y gran escala se apoyan o han tomado ideas de ellos. :point_right: Es un curso formativo que les proporciona fundamentos en algoritmos y herramientas computacionales para su desarrollo profesional en la ciencia de datos :) :point_right: Estudiamos los cursos de optimización pues todos los modelos o métodos de aprendizaje de máquina plantean problemas de optimización. <!-- .slide: style="font-size: 28px;" --> ---- ## Descripción Para ver más descripción y objetivos de este curso consultar el [temario](https://drive.google.com/file/d/17ydFChBFxxAOzsIPwUu90KR01zRXdCNZ/view?usp=sharing). --- ## ¿Software? * Lenguajes de programación: Python, R y un poquito de C. Paquetes para cómputo secuencial y en paralelo en la CPU y la GPU como: * Multiprocessing, Dask, parallel, openMP. * CuPy, gputools, CUDA. * Docker, git, bash, [github](https://github.com/), [dockerhub](https://hub.docker.com/). * Software para optimización. ->Posible: Julia. :point_right: Está encapsulado en la imagen de [docker](https://www.docker.com/) [palmoreck/jupyterlab_optimizacion_2:3.2.8](https://github.com/palmoreck/dockerfiles/tree/master/jupyterlab/optimizacion_2) <!-- .slide: style="font-size: 28px;" --> ---- ## ¿Hardware? Usaremos AWS para cómputo en la nube y sus máquinas locales. En AWS usaremos kale y kubeflow (basados en [kubernetes](https://kubernetes.io/)). El programa [AWS Academy](https://aws.amazon.com/training/awsacademy/) nos ayudará mucho y les invitaré a sus correos con dominio itam.mx ---- ### ¿Kubernetes? Es un sistema *open source* para el despliegue, monitoreo, escalamiento y manejo automático de aplicaciones que se ejecutan en contenedores. No levantaremos un Kubernetes desde cero pues es un tema avanzado y no es necesario para la clase. Usaremos [kale](https://github.com/kubeflow-kale/kale) en AWS que por debajo tendrá un [minikube](https://github.com/kubernetes/minikube) para lanzamiento de pipelines de procesamiento. ---- :point_right: usaremos a un alto nivel la herramienta de kale. Ver [AWS-y-Kubernetes](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/wiki/4.AWS-y-Kubernetes) del wiki para más información sobre Kubernetes. <!-- .slide: style="font-size: 28px;" --> ---- ## ¿GPU? ¿requerimos una tarjeta gráfica en nuestra laptop? Si tienen una laptop con una tarjeta gráfica pueden realizar las instrucciones de [aquí](https://github.com/palmoreck/programming-languages/tree/master/C/extensiones_a_C/CUDA/instalacion) para realizar las instalaciones correspondientes. Pero **no** será necesario que tengan una laptop con una tarjeta gráfica :) ---- Vamos a resolver lo anterior con AWS y/o con [google colab](https://colab.research.google.com/github/shranith/Colab-intro/blob/master/Colab_intro.ipynb). :point_right: Para google-colab requieren una cuenta en gmail. Algunas ligas de referencia de *google colab* son: [colaboratory-faq](https://research.google.com/colaboratory/faq.html) y [colab-github-demo](https://github.com/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb). <!-- .slide: style="font-size: 28px;" --> ---- Hay un botón en el repo de binder para interactividad y cómputo con la CPU: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/palmoreck/dockerfiles-for-binder/jupyterlab_optimizacion_2?urlpath=lab/tree/analisis-numerico-computo-cientifico) Antes coloqué también botones ![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg) para la GPU y pueden ser una opción para interactividad. --- ## Dinámica La clase son los jueves de 6 a 9 pm y es **en línea** a través de [Zoom](https://zoom.us/). Hacemos *breaks* de 10 min cada hora. En el repo creé la rama [optimizacion-2-2022](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/tree/optimizacion-2-2022) que contiene información en específico de este semestre. ---- ## Dinámica Cada clase revisamos el [libro de optimización](https://itam-ds.github.io/analisis-numerico-computo-cientifico/) que contiene los temas del curso. En la [liga](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/tree/optimizacion-2-2022#organizaci%C3%B3n-del-curso) encuentran la agenda. Usamos [canvas](https://www.instructure.com/es/canvas) donde publicaré el examen y prácticas a realizar. ---- ## Calificación |Exámenes(1)| Prácticas(2)|Proyecto final| |:---:|:---:|:---:| |20|20|40 :heavy_plus_sign: asignaciones que se toman como extra a la calificación final. **El curso se acredita con calificación mayor o igual a 6.** Más información en [generalidades del curso de optimización avanzada](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/blob/optimizacion-2-2022/generalidades_curso_de_optimizacion_avanzada.md). :point_right: Sus prácticas las entregarán en los repos que se crearán automáticamente en la organización [optimizacion-2-2022-gh-classroom](https://github.com/optimizacion-2-2022-gh-classroom) de [github classroom](https://classroom.github.com/). <!-- .slide: style="font-size: 28px;" --> ---- ## Sobre lo que nunca deben realizar **Copiar en un examen/tarea/trabajo/entrega pues se pondrá cero en el mismo. Si vuelve a repetirse la situación se le notificará a dirección escolar para realizar la anotación correspondiente en su expediente.** ---- ## Sobre lo que siempre deben realizar **Documentar sus referencias, fuentes, colaboraciones y material que utilizan para resolver sus exámenes, prácticas o proyectos.** --- ## ¿Preguntas? --- ## Tarea para la primer clase * Crear *user* de [dockerhub](https://hub.docker.com/). * Unirse al chat de [gitter](https://gitter.im/) con su *user* de *github* dando click en [![Gitter](https://badges.gitter.im/optimizacion-2-2022/community.svg)](https://gitter.im/optimizacion-2-2022/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) o en el repo en la [liga](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/tree/optimizacion-2-2022#dar-click-en-el-siguiente-bot%C3%B3n-para-unirse-al-chat-del-semestre-enero-mayo-en-gitter-). * Aceptar la invitación al curso de [AWS Academy](https://aws.amazon.com/training/awsacademy/) ---- ## Tarea no para la primer clase ... pero sí para un tiempo razonable (febrero por ejemplo) :) Desempolvar lo que conocen sobre AWS. Pueden ayudarles las ligas, documentación y videos sobre AWS dentro de [wiki](https://github.com/ITAM-DS/analisis-numerico-computo-cientifico/wiki) del repo. --- Esta presentación fue realizada con [reveal.js](https://revealjs.com/). Aquí la liga de su *github*: [reveal.js github](https://github.com/hakimel/reveal.js/). También me apoyé de [hackmd](https://hackmd.io/) para la creación de documentos de forma colaborativa (así como un google drive) y en particular para presentaciones de *reveal.js*. Ver [tutorial](https://hackmd.io/c/tutorials/%2Fs%2Fhow-to-create-slide-deck) para creación de presentaciones con *reveal.js*. Mi user de *github* es [palmoreck](https://github.com/palmoreck), el medio de contacto es por el chat de [gitter](https://gitter.im/) como **primera opción** y como **segunda opción:** erick89.itam@gmail.com. En [liga](https://mcdatos.itam.mx/erick-palacios/) una breve descripción de mí :)
{"metaMigratedAt":"2023-06-15T18:22:38.594Z","metaMigratedFrom":"YAML","title":"Intro_a_optimizacion_2","breaks":true,"slideOptions":"{\"theme\":\"solarized\",\"transition\":\"fade\",\"controls\":true,\"progress\":true}","contributors":"[{\"id\":\"8b24e736-2935-427d-8d66-2819293128a2\",\"add\":15803,\"del\":8386}]"}
    999 views