Archive for the 'Doctorado' Category

El “paper”

Hace poco más de un mes mencioné que me habían aceptado un artículo en la conferencia “ACM/IEEE International Symposium on High Performance Distributed Computing” (mejor conocida como HPDC 2008). La publicación de artículos (o “papers“) en conferencias y revistas científicas es una parte importante de sacarse el doctorado (y de ser un científico), ya que suele ser la única prueba tangible de tus trabajos de investigación. O, mejor dicho, la única prueba tangible que ha sido revisada por terceras personas, en lugar de trabajos que puedas escribir por tu cuenta y que solamente revisas tú o, a lo sumo, tu director de tesis. Esta revisión permite garantizar (en cierta medida) que los resultados son válidos, que en el artículo no se contradicen (o se obvian) trabajos anteriores, etc. Este es el sistema de peer reviewing (o “revisión por pares” o “revisión por otros”), uno de los pilares de la ciencia moderna, y sobre el que escribiré en algún momento (se me están acumulando temas sobre los que escribir en el blog…).

En fin, hace poco colgamos en la web la versión final del paper, titulado “Combining Batch Execution and Leasing Using Virtual Machines”, y co-escrito con Kate Keahey e Ian Foster. Este es el abstract (”resumen”) del paper:

As cluster computers are used for a wider range of applications, we encounter the need to deliver resources at particular times, to meet particular deadlines, and/or at the same time as other resources are provided elsewhere. To address such requirements, we describe a scheduling approach in which users request resource leases, where leases can request either as-soon-as-possible (”best-effort”) or reservation start times. We present the design of a lease management architecture, Haizea, that implements leases as virtual machines (VMs), leveraging their ability to suspend, migrate, and resume computations and to provide leased resources with customized application environments. We discuss methods to minimize the overhead introduced by having to deploy VM images before the start of a lease. We also present the results of simulation studies that compare alternative approaches. Using workloads with various mixes of best-effort and advance reservation requests, we compare the performance of our VM-based approach with that of non-VM-based schedulers. We find that a VM-based approach can provide better performance (measured in terms of both total execution time and average delay incurred by best-effort requests) than a scheduler that does not support task pre-emption, and only slightly worse performance than a scheduler that does support task pre-emption. We also compare the impact of different VM image popularity distributions and VM image caching strategies on performance. These results emphasize the importance of VM image caching for the workloads studied and quantify the sensitivity of scheduling performance to VM image popularity distribution.

En fin, si sentís curiosidad por mi trabajo, echadle un vistazo, aunque prometo que eventualmente acabaré escribiendo un artículo más accesible sobre mi trabajo. Los aun más curiosos pueden echarle un vistazo a mi lista completa de publicaciones.

Este trimestre: enseñando bases de datos

Tras dos trimestres de investigación pura y dura que culminaron en la publicación que ya he mencionado anteriormente, este trimestre me toca volver a la docencia. ¡Albriquias! ¡Alegrata! ¡Me late el cardiotripa! En concreto, voy a ser asistente de docencia en CMSC 23500, una asignatura de introducción a las Bases de Datos. Voy a ser el responsable de organizar e impartir las prácticas de la asignatura, lo que incluye ejercicios a pie de máquina pero también sesiones de discusión en los que resolvemos ejercicios más “teóricos” (p.ej., diseño de una base de datos).

Aunque las bases de datos no tienen mucho que ver con mi área de investigación, siempre ha sido una mis materias favoritas de la informática (tanto la parte de diseño como la parte de programación). De hecho, cuando estudiaba ingeniería en ESIDE fui “becario web” desde 1999 hasta 2003, y al final mis responsabilidades acabaron tirando más hacia el diseño y administración de las bases de datos de las que dependían las aplicaciones web de ESIDE (y luego de toda la universidad). Ahora que me doy cuenta, tengo mil historias de esa época y algún día debería sentarme a ponerlas por escrito… en fin, a lo que iba, que las bases de datos siempre me han molado bastante.

Sin embargo, hasta ahora no he impartido una clase de bases de datos a nivel universitario (impartí un par de cursos de bases de datos en Bilbao, pero eran fuera de la universidad), así que cuando me comentaron cuales eran mis opciones docentes para este trimestre, escogí la asignatura de base de datos sin pensármelo dos veces. Evidentemente, no va a ser una asignatura tan orientada al h4×0ring como la asignatura de programación cuyas prácticas impartí en 2006 y 2007, y en la cual teníamos a los estudiantes escribiendo parsers con lex y yacc en la quinta semana. No obstante, tengo unas cuantas ideas en ebullición. En concreto, desde que me involucré con el Center for Teaching and Learning de la universidad, me he interesado mucho por el Aprendizaje Activo y el Aprendizaje Colaborativo, y últimamente intento aplicarlos lo máximo posible en mi docencia.

Por ejemplo, la semana pasada tuvimos el primer “discussion group” de la asignatura, en el que me reuno con los estudiantes de la asignatura (14 estudiantes, aunque a la sesión vinieron 8) durante una hora y “discutimos”. Como no hemos llegado a SQL ni a los otros aspectos más técnicos de las bases de datos, el propósito de esta sesión fue realizar el diseño de una base de datos utilizando el modelo Entidad-Relación. Lo estructuré de la siguiente manera:

  1. Entrego a los estudiantes un enunciado, y les doy unos minutos para que lo lean y hagan preguntas por si algo no queda claro. Podeis echar un vistazo al enunciado aquí. Como podéis ver, ajem, me cuesta desvincular el frikismo de la docencia xDDD
  2. Los estudiantes se juntan en grupos de tres, y realizan el diagrama Entidad-Relación juntos. Esto es mejor que hacerlo individualmente porque (1) en el “mundo real” casi siempre te va a tocar colaborar con otras personas en este tipo de tareas y (2) porque esto estimula discusión sobre conceptos teóricos que se han visto en clase (p.ej., “Esto es una entidad débil!” “Me parece que no” “Explícame por qué no” etc.)
  3. Pasada media sesión, cada grupo escribe su solución en la pizarra. En concreto, tuvimos tres soluciones, todas esencialmente correctas, pero con sutiles diferencias, porque hay mil maneras de diseñar una base de datos, y cada una suele diferir en puntos semánticos muy detallistas o incluso irrelevantes. Esto también estimula una discusión sobre cómo se diseña una base de datos, por qué distintos diseños pueden plasmar la misma realidad, etc.

Cabe destacar que estas sesiones son opcionales, y ni siquiera son evaluadas. Su propósito es puramente complementar lo que se ve en las clases “de teoría” para reforzar los conocimientos. Y, aun así, la mayoría de los estudiantes vienen y hacen los problemas sin rechistar (no hay grupos donde uno hace todo el trabajo, y el resto se rasca las narices). Evidentemente, esta estrategia es posible porque es un grupo pequeño de estudiantes y porque aquí en EEUU los estudiantes están habituados a hacer mucho trabajo fuera de las clases “de teoría”, a hacer muchas preguntas, y a dialogar lo máximo posible con los docentes (a diferencia de los estudiantes españoles, que tendemos a ser muy calladitos).

En fin, más adelante vamos a cubrir SQL, programación web con bases de datos, y aspectos más teoricos de las bases de datos (como los dichosos arboles B). De hecho, hace más de un lustro escribí un cuaderno de ejercicios de SQL, y este trimestre quiero traducirlo al inglés, extenderlo, y publicarlo online. Más detalles sobre esto en el siguiente post.

Sotomayor et al.

Mirando un artículo científico que quiero citar en el artículo que me aceptaron la semana pasada, me he encontrado con esto:

More closely related to our work, Sotomayor et. al proposed an accurate resource allocation method for virtual computing environments [12]. Job execution time accounting in typical batch job schedulers include the time for staging executables to compute nodes, since the staging cost is typically very small compared to its execution time. However, deploying a virtual cluster can take significantly longer, thus including its time in execution time accounting can be unfair for the user. Sotomayor et. al proposed a VM-aware resource accounting method by estimating the time to deploy virtual machines on a single cluster. Similar to us, their estimation uses the information of the size of the VM image and the number of VMs to deploy. Unlike us, they assume homogeneous performance of compute nodes. Thus, their estimation would not be as accurate as ours in the presence of significantly different speeds of disk I/O.

[12] B. Sotomayor, K. Keahey, and I. Foster. Overhead matters: A model for virtual resource management. In First International Workshop on Virtualization Technology in Distributed Computing (VTDC’06), Nov 2006.

Me parece que es la primera vez que veo un artículo mío citado en otro artículo científico (al menos, siendo yo el primer autor; si que me han citado artículos en los que yo no era primer autor, con lo cual la cita no era “Sotomayor et al.”). En los artículos científicos es sumamente importante citar otros artículos relacionados con tu trabajo. No hacerlo suele ser indicativo de ignorancia o malicia. Es decir, o bien eres ignorante de tu área de conocimiento, o eres un “mal científico” que no quiere citar un trabajo que está “demasiado relacionado” y le restaría novedad a tus resultados. Curiosamente, en casi todos los artículos científicos que he leído, la sección de artículos relacionados suele incluir un párrafo por cada artículo, con la siguiente estructura en cada parrafo:

  1. El artículo escrito por Fulanito et al. propone un modelo/técnica/algoritmo/etc. para resolver el problema X.
  2. El problema X es importante y está relacionado con nuestro trabajo por las razones A, B, y C.
  3. La solución propuesta por Fulanito et al. mola mazo, y por eso la citamos.
  4. Eso sí, con respecto al subproblema Y del problema X, la solución de Fulanito et al. es una mierda pinchada en un palo.
  5. Nosotros, en cambio, abordamos el subproblema Y del problema X de una manera admirable.
  6. (Implícito: ¡Hurra por nosotros!)

Como podéis veis, el mundo académico es emocionante que lo flipas ;-)

Para los curiosos, “et al.” es la abreviación de “et alia”, que es latín para “y los otros”. Cuando se cita un artículo escrito por múltiples autores, sería muy engorroso escribir “el artículo de Fulanito, Menganito, Juanito, Jaimito, y Jorgito”, y se deja simplemente con el apellido del primer autor seguido de “et al.”.

A good week

roosevelt.jpg

Esta ha sido una buena semana. El lunes, tal y como relaté en el blog, nos notificaron de que Globus fue seleccionada como organización mentora en el Google Summer of Code. A lo largo de la semana ya nos han escrito varios estudiantes interesados en trabajar con nosotros durante el verano. Mola :-)

El jueves, además, llegó una muy buena noticia: me notificaron que un artículo que envié en enero a la conferencia “ACM/IEEE International Symposium on High Performance Distributed Computing” (mejor conocida como HPDC 2008) fue aceptado. No olvidemos que en el mundillo académico es importante publicar artículos científicos con los resultados de tu trabajo, especialmente si eres un estudiante avanzando hacia tu doctorado :-) Ser aceptado en HPDC 2008 es una pasada, porque es una de las conferencias más importantes de mi área, y aceptan muy pocos artículos cada año. Eso sí, es un “conditional accept”, lo que significa que todavía tendremos que hacer unos cuantos cambios al artículo antes de que lo acepten por completo, pero tendríamos que ser muy patanes para no seguir las recomendaciones del comité seleccionador.

Para añadir la guindilla final a esta semana, resulta que este fin de semana me coinciden múltiples planes (preparados antes de que supiese las dos buenas noticias) con amigos Chicaguenses, incluidas un par de cenas. Vamos, una coincidencia fantástica. Ha sido una buena semana. Life is good :-)

P.D.- El de la foto es Theodore Roosevelt. Viene a expresar perfectamente como me siento :-)

Venga a ver, venga a ver…

En la carrera hay muchas asignaturas que generaron en mi una frustración inconmesurable por su aparente futilidad. Estoy seguro que más de un estudiante de ingeniería de ESIDE se ha preguntado varias veces “¿Por qué tengo que estudiar esta asignatura si no tiene nada que ver con la informática?”. Muchos profesores nos aseguraban que ya nos resultarían útiles en el futuro y, en esa edad rebelde, pues no nos lo creíamos. Sin embargo, hay varias ocasiones en las que he tenido que admitir que algunas de esas asignaturas si me han venido bien.

Por ejemplo, en nuestro programa de doctorado hace falta un entrenamiento matemático no trivial, y las asignaturas de Álgebra y Matemática Discreta me proporcionaron esa base (aunque la hubiese olvidado casi por completo cuando llegué a EEUU). Cuando escribí mi libro tuve que escribir una propuesta de libro al editor, en la que me pedían realizar un análisis del mercado y de mi posible competencia. Reaparecieron, pues, en mi cabecita términos como “segmentación del mercado”, “grado de penetración del producto”, etc. y de repente las asignaturas de empresa que antaño me parecieron un tostón ahora resultaron estar plenamente justificadas.

Sin embargo, siempre me ha quedado una espina clavada: las míticas asignaturas de Estadistica I y Estadistica II en ESIDE. Dejando aparte el mal sabor de boca que me dejaron (Estadistica II es la única asignatura que suspendí en la carrera), nunca nunca les había encontrado un propósito práctico. Incluso cuando empecé a interesarme por los fundamentos teóricos de la informática, la estadística no pintaba nada. Era todo matemática discreta y, ocasionalmente, álgebra y análisis matemático.

Pues bien, hace poco por fin he tenido que usar la estadística de manera práctica y totalmente justificada. Actualmente estoy trabajando en un artículo que presenta unos resultados basados en simulaciones de planificación de recursos. He llegado a un punto en el que estoy produciendo una cantidad desorbitada de información, del tipo que ni se puede resumir fácilmente en una tabla ni se puede decir “Bueno, pues la media de todo esto es 5.6 y ya está!”. Y cuanto tienes mucha información y quieres (1) resumirla de tal manera que no se rían de ti cuando presentas los resultados en la conferencia y (2) te permita identificar patrones y comportamientos en la distribución de tus datos, pues la estadística es una herramienta indispensable. Esto no significa que me esté pasando el día haciendo cálculos con papel y lapiz y consultando tablas de distribuciones estadísticas (como hacíamos en esas asignaturas). Me lo estoy pasando como un enano trasteando con R, un paquete libre de estadística que incluye un lenguaje de programación propio y todos los paquetes extra que te puedas imaginar (vamos, es algo así como el LaTeX del análisis estadístico :-P), y mi ultimo vicio son las regresiones no-paramétricas. Antes de utilizar R y aplicar métodos estadísticos a mis datos, la información producida por mis experimentos no tenía ni pies ni cabeza. Y ahora, gracias a la estadística, lo veo todo claro. Quién me lo iba a decir…

P.D.- Para los que no seais de ESIDE, el título hace referencia a cierto profesor de ESIDE. La próxima vez que pregunte a ver si alguien le mecaniza la estadistica, le decís que el proyecto R ya lo ha hecho :-P