El objetivo de esta asignatura es conocer el funcionamiento y aplicaciones de sistemas de computación de alto rendimiento, a fin de desplegar aplicaciones de inteligencia artificial que requieren gran cantidad de recursos, optimización de procesos y aplicación de aceleradores, y aprovechamiento y orquestación de recursos en la nube. En este curso se verán conceptos de virtualización y containerización, así como sistemas de archivos distribuidos y sistemas de computación distribuida. También se verá escalabilidad en algoritmos de aprendizaje automático e inteligencia artificial, usando tecnologías del estado del arte, tanto por middleware como por aceleradores. Se trabajará con lenguajes C, Python y Scala.
Profesorado
Responsable
Josep Lluís Berral García (
)
Otros
Jordi Torres Viñals (
)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Competencias Transversales
Transversales
CT2 - Sostenibilidad y Compromiso Social. Conocer y comprender la complejidad de los fenómenos económicos y sociales típicos de la sociedad del bienestar; tener capacidad para relacionar el bienestar con la globalización y la sostenibilidad; lograr habilidades para utilizar de forma equilibrada y compatible la técnica, la tecnología, la economía y la sostenibilidad.
CT3 - Comunicación eficaz oral y escrita. Comunicarse de forma oral y escrita con otras personas sobre los resultados del aprendizaje, de la elaboración del pensamiento y de la toma de decisiones; participar en debates sobre temas de la propia especialidad.
CT6 [Avaluable] - Aprendizaje autónomo. Detectar deficiencias en el propio conocimiento y superarlas mediante la reflexión crítica y la elección de la mejor actuación para ampliar dicho conocimiento.
Básicas
CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
Competencias Técnicas
Específicas
CE05 - Analizar y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman.
CE06 - Identificar las características, funcionalidades y estructura de los Sistemas Operativos y diseñar e implementar aplicaciones basadas en sus servicios.
CE07 - Interpretar las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas.
CE08 - Detectar las características, funcionalidades y componentes de los gestores de datos, que permitan su adecuado uso en flujos de información, y el diseño, análisis e implementación de aplicaciones basadas en ellas.
CE11 - Identificar y aplicar los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
CE19 - Utilizar los sistemas de computación actuales, incluidos sistemas de alto rendimiento, para el proceso de grandes volúmenes de datos desde el conocimiento de su estructura, funcionamiento y particularidades.
Competencias Técnicas Genéricas
Genéricas
CG1 - Concebir, redactar, organizar, planificar y desarrollar proyectos en el ámbito de la inteligencia artificial.
CG3 - Definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas en el ámbito de la inteligencia artificial.
CG9 - Afrontar nuevos retos con una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Inteligencia Artificial. Desarrollar la actividad aplicando criterios de calidad y mejora continua, y actuar con rigor en el desarrollo profesional. Adaptarse a los cambios organizativos o tecnológicos. Trabajar en situaciones de carencia de información y/o con restricciones temporales y/o de recursos.
Objetivos
Entender el uso de la computación de altas prestaciones y middleware para la inteligencia artificial
Competencias relacionadas:
CG1,
CG9,
CT3,
CT6,
CE19,
Conocer los componentes básicos de hardware y middleware en plataformas de altas prestaciones
Competencias relacionadas:
CG9,
CT2,
CE05,
CE08,
CE19,
Aprender sobre el uso de aceleradores (e.g. GPUs) y herramientas para su explotación
Competencias relacionadas:
CG3,
CT6,
CE08,
CE19,
Aprender conceptos de virtualización y usos de las máquinas virtuales
Competencias relacionadas:
CG3,
CT2,
CB2,
CE05,
CE06,
Familiarizarse con las herramientas básicas para la explotación de sistemas distribuidos, con modelos de programación orientados a la distribución
Competencias relacionadas:
CG3,
CT6,
CE07,
CE08,
CE11,
Conocer los conceptos básicos de sistemas distribuidos: interconexión y comunicaciones entre sistemas.
Competencias relacionadas:
CG3,
CT3,
CT6,
CE07,
CE11,
Aprender sobre sistemas de ficheros: uso básico de los sistemas de ficheros, sistemas en de discos redundantes, volúmenes lógicos, tolerancia a fallos.
Competencias relacionadas:
CG3,
CT6,
CB2,
CE06,
CE07,
CE08,
Descubrir los retos en la computación de altas prestaciones en inteligencia artificial
Competencias relacionadas:
CG1,
CG9,
CT2,
CT3,
Contenidos
Introducció a los sistemas de Computación de Altas Prestaciones
Introducción a los sistemas de computación de gran escala, especializados y la nube.
Aceleradores y dispositivos de altas prestaciones
Incorporación de aceleradores (e.g. GPUs) y herramientas para su explotación. Operaciones con matrices aceleradas mediante dispositivos especializados.
Middleware y plataformas de altas prestaciones para la inteligencia artificial
Componentes básicos de hardware y middleware en plataformas de altas prestaciones. Uso de herramientas del estado del arte y la industria (e.g. TensorFlow, Pytorch, etc.) combinado con dispositivos especializados.
Paralelismo aplicado a la inteligencia artificial
Paralelismo en computación de altas prestaciones y su interacción con los middlewares más extendidos en aplicaciones de inteligencia artificial, aprendizaje profundo y transformers, y sus técnicas asociadas.
Introducción a modelos distribuidos para Big Data
Introducción a modelos Map-Reduce sobre sistemas de datos distribuidos y lenguaje Scala.
Concepto de virtualización y containerización
Introducción al uso de máquinas virtuales y containerización, para ejecuciones isoladas y personalización de entornos, así como migración de carga y gestión de recursos en sistemas compartidos.
Sistemas de ficheros locales y distribuidos, redundancia y disponibilidad
Uso básico de los sistemas de ficheros, así como sistemas de almacenamiento distribuido, volúmenes lógicos, redundancia, tolerancia a fallos y alta disponibilidad.
Computación en sistemas distribuidos
Conceptos básicos de sistemas distribuidos (e.g. Hadoop y Spark), interconexión y comunicaciones, paradigmas de los sistemas distribuidos y protocolos, tolerancia a fallos. Herramientas básicas para la explotación de concurrencia en sistemas distribuidos, y sus modelos de programación orientados a inteligencia artificial y el proceso masivo de datos.
Retos de la computación de altas prestaciones para la inteligencia artificial
Retos de presente y futuro de la computación de altas prestaciones aplicada a la inteligencia artificial. Herramientas y entornos actuales en la industria, la nube, la academia y la sociedad.
Actividades
ActividadActo evaluativo
Conceptos de virtualización y containerización
Introducción al uso de máquinas virtuales y containerización, para la ejecución aislada y personalizada de entornos, así como migración de carga y gestión de recursos a sistemas compartidos. Objetivos:4 Contenidos:
Introducción a los modelos Cliente-Servidor, sistemas de gestión de ejecución, y lanzamiento de aplicaciones en sistemas clúster y Cloud.
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h
Supercomputación y Computación de Altas Prestaciones
Supercomputadores y Computación de Altas Prestaciones, herramientas y entornos. Familiarización con las instalaciones HPC, hand-on en uso de sistemas HPC y lenguaje C. Objetivos:2 Contenidos:
Aceleradores, supercomputadores y dispositivos de altas prestaciones
Aceleradores y dispositivos de altas prestaciones. GPUs y dispositivos aceleradores. Multiplicación de matrices usando GPUs. Introducción a Python en un supercomputador. Objetivos:3 Contenidos:
Conceptos básicos de sistemas distribuidos (e.g. Hadoop y Spark), interconexión y comunicaciones, paradigmas de sistemas distribuidos y protocolos, y tolerancia a fallos. Herramientas básicas para la explotación de concurrencia en sistemas distribuidos, y sus modelos de programación orientados a la inteligencia artificial y al proceso masivo de datos. Objetivos:65 Contenidos:
Sistemas de archivos locales y distribuidos, redundancia y disponibilidad
Usos básicos de sistemas de archivos, así como a los sistemas de almacenamiento distribuido de datos, volúmenes lógicos, redundancia, tolerancia a fallos y alta disponibilidad. Objetivos:7 Contenidos:
Paralelismo aplicado a la inteligencia artificial. Escalabilidad, técnicas avanzadas de deep learning, transformers y futuro de Deep Learning. Objetivos:21 Contenidos:
El curso se basa en sesiones de teoría y laboratorio presenciales. Las sesiones teóricas combinan clases magistrales y seminarios de expertos en el ámbito, siguiendo el programa expuesto en este plan de estudios y basadas en el uso de material propio. Durante las sesiones se promueve el diálogo y la discusión para anticipar y consolidar los resultados de aprendizaje de la asignatura.
Las sesiones de laboratorio tratan los aspectos relacionados con las diferentes tecnologías presentadas, y siguen los mismos temas del plan de estudios. Son sesiones prácticas en forma de Hands-On, utilizando diferentes recursos computacionales en el Departamento de Arquitectura de Computadores y en el Barcelona Supercomputing Center.
Método de evaluación
La evaluación se fundamentará básicamente en la realización de trabajos de forma continua durante las distintas sesiones del curso. La asistencia y la participación serán obligatorias, y por tanto también se evaluarán pasando lista y requiriendo la participación en las sesiones interactivas. Finalmente, habrá un trabajo de investigación a lo largo de la asignatura, que los estudiantes tendrán que presentar ante sus compañeros.
La distribución de los pesos de cada actividad es la correspondiente:
- AS: asistencia a clase, teoría y laboratorios (10%), que servirá para evaluar la competencia transversal CT3.
- PR: participación en clase (15%)
- EX: ejercicios de laboratorio (55%), como media aritmética de las prácticas de laboratorio.
- RE: presentación de trabajo de investigación (20%), que servirá para evaluar las competencias transversales CT2, CT3 y CT6.
La Nota Final (NF) de la asignatura se obtiene a partir de
NF = 0.10 x AS + 0.15 x PR + 0.55 x EX + 0.20 x RE
Re-evaluación:
a) Solamente se pueden presentar a re-evaluación aquellos que han presentado todas las actividades EX + RE, y han suspendido NF. (Esto es, se excluyen lo que quieran subir nota y los NP)
b) La nota máxima de re-evaluación será un 7.