miércoles, 12 de marzo de 2014

AzureBench: Benchmarking the Storage Services of the Azure Cloud Platform and an Application Framework for Scientific Applications on Windows Azure Cloud Platform

Experiment reproduction and evaluation. From the works of:  Dinesh Agarwal & Sushil Prasad. Actual scientific computing scenario faces the reality and the need for dealing with enormous set of data-intensive computational tasks. These activities require massive storage resources as well as immense computational power. While the largest and best funded research projects are able to afford expensive computing infrastructure, most other projects are forced to opt for cheaper resources such as commodity clusters or simply limit the scope of their research (Lu, Jackson & Barga, 2011).

However, a not so well-known characteristic of cloud computing environments, and a major concern for the consumer segment is performance. This topic is considered as a permanent subject of discussion in various scientific forums. Actual providers are unable to provide solid offers about performance guarantee. The common practice is availability, portability and compatibility.

Since 2010, Microsoft offers a Platform as a Service Model, with the associate financial model of pay-as-you-go. Under the name of Microsoft Azure platform, this cloud computing platform offers a set of cloud computing services and might provide an option for the computational and storage needs of such scientific computation activities.

Windows Azure allows the users to lease Windows virtual machines instances according to a platform as service model and offer the .Net runtime as the platform through two programmable roles called Worker Roles and Web Roles. Azure also supports VM roles, enabling the users to deploy virtual machine instances supporting an infrastructure as a service model as well.

Azure Cloud computing seems to promise a viable solution for the computational demands from the scientific community. However, many questions and concerns arises in regards the performance guarantees and capabilities of such system. Consulted literature suggests that there is a generalized sense in the community for the need of deeper understanding of the performance variables of cloud systems. Recent work on the area of cloud computing has focused on this concern.

Azure network and storage service is optimized for scalability and cost efficiency. However, the primary performance factors in an HPC system are communications latency and bisectional bandwidth. Windows Azure cloud platform lacks the traditional HPC software environment including MPI and Map-reduce. On the other hand, while it might not be the best fit for some scientific applications that essentially require MPI-like functionality, it can provide a very simple model for a wide variety of scientific applications (Awargal & Prasad, 2012).

There are striking differences between scientific application workloads and the workloads for which Azure and other cloud platforms were originally designed, specifically long lived web services with modest intra-cluster communications. Scientific application workloads, on the other hand, define a wide spectrum of system requirements. There is a very large and important class of \parameter sweep" or \ensemble computations" that only require a large number of fast processors and have little inter-process communication requirements. At the other extreme there are parallel computations, such as fluid flow simulations, where the messaging requirements are so extensive that execution time is dominated by communication (Lu, Jackson & Barga, 2011).

The importance of Azure platform has been recognized by industry as well as academia as is evident from the rare partnership of National Science Foundation (NSF) and Microsoft in funding scientific research on Azure cloud (Agarwal & Prassad, 2012).

In 2012, an open-source system called AzureBench was presented to the community as and aid to the HPC developers and as a contribution to the scientific community in need of HPC resources and who are facing the task of choosing the most suitable provider for their needs. This system provides a benchmark suite for performance analysis of Azure cloud platform’s and its various storage services. The authors provide a generic open-source application framework that can be a starting point for application development over Azure.

AzureBench provide a comprehensive scalability assessment of Azure platform’s storage services using up to 100 processors. It provides updated, realistic performance measurements as they utilize the latest APIs released after significant changes were made to the Azure cloud platform since 2010. AzureBench work represents an extension of the preliminary works from Hill et al. in the publication “Early observations on the performance of Windows Azure”, from 2010.


Prior research

As mentioned before, a significant concern about cloud systems is performance. Nowadays, few or none of the major providers are able to offer a solid guarantee on application performance. Due to this concern, Hill et al initiated their research in 2010 under the subject of “Early Observations on the Performance of Windows Azure”. The use of the “early” terms is obviously derived from the first days of Azure system which was launched in 2010.

In their research they initially tried to overcome the issue that developers faces as more cloud providers and technologies enter the market: Deciding which vendor to choose for deploying their applications. Therefore their work was developed under the premise that one critical step in the process of evaluating various cloud offerings can be to determine the performance of the services offered and how those performance conditions match the requirements of the consumer application.

Regardless of the potential advantages of the cloud in comparison to enterprise-deployed applications, cloud infrastructures may ultimately fail if deployed applications cannot predictably meet behavioral requirements (Hill et al, 2011).

Hill et al presented the results from experiments showing an exhaustive performance evaluation of each of the integral parts of the Azure platform: virtual machines, table, blob, queues and SQL services. Based on these experiments, their work provided a list of performance related recommendations for users of the Windows Azure platform. 

One interesting element that was found during the analysis was related to the Blob storage performance. It was observed that depending on the number of concurrent clients and the size of the data objects to be stored, the performance of Blob was between 35% to 3 times faster than Table. However, due to the black box nature of the cloud services the researchers were unable to provide an explanation for this behavior.  

Regarding the queues behavior it was found that multiple queues should be used for supporting many concurrent readers/writers as performance degraded as concurrent readers and/or writers were added. They also found that message retrieval was more affected by concurrency than message put operations so users cannot assume similar scale at each end of the queue.

In general, it was concluded that performance over time was consistent, although there are rare occasions -less than 1.6% occurrence for 50% slowdown or worse, 0.3% for 2x slowdown or worse- where performance degraded significantly. Therefore, we have seen no reason to provision assuming a worst-case behavior in Azure that is significantly worse than average-case behavior (Hill et al, 2011).
Methodology

The Windows Azure Platform is composed of three services: Windows Azure, SQL Azure, and AppFabric. Agarwal & Prasad research focuses on Windows Azure, which encompasses both compute resources and scalable storage services.

In order to evaluate Windows Azure storage mechanisms, Agarwal & Prassad, deployed 100 Small VM. A typical Small VM for Windows Azure has 1 CPU core, 1.75GB RAM and 225 GB HD. Those virtual machines read/write from/to Azure storage concurrently.

The AzureBench Application workflow starts with a web-interface where users have an option to specify the parameters for background processing. VM configuration for web role depends on the intensity of the tasks to be handled by the web role. For applications where web role performs computationally-intensive operations, a fat VM configuration should be chosen. Similarly, if the web role needs to access large data items from cloud storage, it could be a fat VM to upload/download data to/from the storage using multiple threads. To communicate task with worker roles, web role puts a message on a Task assignment queue.


They also selelected several metrics, structured according to the execution phases of scientific applications. A first step consists of deploying the customized environment and fetching the initial data. In a second phase, the application was executed, so they were also interested in the computation performance and the efficiency of the network transfers. The following table summarized the procedures executed during the evaluation process.




The exact experiment is repeated 5 times with varying entity sizes of 4 KB, 8 KB, 16 KB, 32 KB, and 64 KB.


Blob
Each VM upload one 100MB blob to the cloud in 100 chunks of 1 MB each. Workers are synchronized to wait until all VM are done uploading blobs before starting download. There is no API in the Azure to manage process synchronization. This situation if worked around with the implementation of a queue as a shared memory resource.



Queue
Three operations were tested: inserting a message using PutMessage API, reading a message using GetMessage API, and reading a message using PeekMessage API. Evaluation was done under two scenarios: each worker works with its own dedicated queue, and all workers access the same queue. For both experiments, a total number of 20K messages were first inserted in the queue, and then read using both APIs, and finally deleted from the queue.



Table
Each worker role instance inserts 500 entities in the table, all of which are stored in a separate partition in the same table. Once the insertion completes, the worker role queries the same entities 500 times. After the querying phase ends, the worker role updates all of the 500 entities with newer data. Finally, all of these entities are deleted.


The methodology implemented by Agarwal & Prasad allows for a deep understanding an analysis of Azure platform’s middleware. They perform exhaustive activities over the Queue storage mechanism, query-like interface to store data through Table storage, and persistent random access to hierarchically stored data through Blob storage. Also the utility based framework facilitates experimenting with large amount of compute power obviating the need to own a parallel or distributed system.

The experimentation focuses on Azure cloud storage services which are its primary artifacts for inter-processor coordination and communication. The iterative algorithm provides a full cycle of test from different perspective of data size and parallel VM workers. This approach allowed the researcher to point out various bottlenecks in parallel access of storage services.

Contribution

The major contribution for this work, aside from the results and guides provide for HPC developers, is that AzureBench is an open-source benchmark suite hosted at Codeplex repository available under GPLv2. Therefore, the open source of this project nature should motivate further research in this direction

Another important factor is that Agarwal & Prasad assessments on Microsoft Azure loud platform provide updated and realistic performance measurements. This was verified not only for the present results but also because the source code demonstrate that all utilized APIs were released after significant changes were made to the Azure cloud platform since 2010.

They also provided to the community with a template for a generic application framework for Azure cloud. This will also help interested developers to reduce time on the learning curve by means of a clear and solid starting point to design their own applications.

Finally, Agarwal & Prasad provide a summary of their findings and make recommendations for developers to efficiently leverage the maximum throughput of storage service

Personal Experiment Discussion

In the personal experiment we intended to reproduce the execution of the algorithms used for blob, tables and queue performance analysis. In order to do so, we download and installed the open source version (Alpha) of AzureBench from Codeplex repository. The source code available is based on C#/ASP and has it last review on January 2012. 

Resources used during the experiment reproduction are the following:

Microsoft Azure Account
Trial
Cluster Affinity Group
East USA
VM Size
Small ( 1 Core + 1.75GB RAM)
Maximum VM Cores
20
Development Platform
Visual Studio 2010 + Azure SDK 1.7
VM WebRoles
2
VM WorkRoles
2-4-8-16

Experiment was divided into 10 steps:
1. Source Code Deployment
2. Azure Account Setup
3. Source Code analysis and framework interpretation
4. Source tweaking and modification for Local Emulation
5. Source tweaking and modification for Source Deployment
6. Source Code compilation and binary built
7. Azure Application Package Generation
8. Cloud Application Deployment
9. VM Workers Provisioning 
10. Application Execution and Benchmark Execution
a. Behavior Observation
b. Analysis of Results

Our testing environment was the same as the one used in the original paper, except for the total number of VM workers available for testing. The original work performed test from 1 to 96 VM workers (Cores). Our scenario was limited to 20 VM workers due to budget restrictions. Our execution included the iterations of data sizes for messages from 4K to 64K.

It was observed that the behavior obtained during the tests for tables and queue, using 2-4-8 & 16 VM Workers had the same patter (not the same values) as the ones presented on the original paper. The projection shows that this patter would be the same for testing with more than 16 cores.

We were able to reproduce 2 out of  3 experiments presented in the original paper. Source available for Blob performance analysis has bugs and falls into infinite loops when executed over the cloud. By analyzing the source we estimate that this condition is due to an error on the index boundaries used to keep track of the pages during the Synchronization phase. We intend to correct this issue in later versions of this work.

Figure 2 show our results when running Azure Blob Experimental Bench. The application crashed, however, the VM Workers kept trying to recover (heal) themselves from the failure. 50%-90% VM workers gone offline. Application ran form 14 hours without showing any progress on recovery action.


Figure 3 shows that updating a table is the most time consuming process. AS in the original paper it was evidenced that for entity sizes 32 KB and 64 KB, the time taken for all of the four operations increases drastically with increasing number of worker role instances




Windows Azure platform maintains three replicas of each storage object with strong consistency. Figure 4 shows the time to put a message on the queue. For Put Message operation, the queue needs to be synchronized among replicated copies across different servers. We were able to reproduce the behavior of the Peek message operation, noticing that it is the fastest of all three operations. According to Agarwal & Prasad this is due to the fact that there is no synchronization needed on the server end. On the other hand, the Get Message operation in the most time consuming, in addition to synchronization, the message also becomes invisible from the queue for all other worker role instances, therefore this new state needs to be maintained across all copies.
Figure 5 shows a result that is also consistent with the original paper result. During the bench for Azure Shared Queue, we were able to achieve the same behavior as Agarwal and Prasad experiment of Queue storage when multiple workers are accessing a queue in parallel. We can observe that access to the queues increases the contention at the queue and in consequence the time taken by each operation is greater than the time taken when each worker accesses its own queue.

The learning curve for the Azure platform, the operational architecture and the development framework from Visual Studio are very steep, unless the developer has a solid knowledge of Windows WCF. Once the architecture is understood the deployment process is very simple and almost seamless. However, one of the drawbacks learned during the experimentation phase was the application deployment time and roles instantiation. These activities are time consuming and their duration is unpredictable. It can take minutes or even hours depending on the size of the project (amounts of VM workers) and the current state of the cloud. Microsoft charges deployment time as computing time, therefore there is a cost implied.

The results show that Azure offers good performance for the benchmarks tested. However, as stated by Microsoft Research, we can observe that Windows Azure is not designed to replace the traditional HPC supercomputer. In its current data center configuration it does not have the high-bandwidth, low-latency communication model that is appropriate for tightly-coupled jobs. However, Windows Azure can be used to host large parallel computations that do not require MPI messaging.
Further Research

As a future work, additional services provided by Windows Azure platform, such as local drives, caches, and SQL Azure database should be studied in terms of performance. Another aspect that is out of the scope of the actual research, but could be an expansion from Agarwal & Prasad works, is the study of resource provisioning times and application deployment timings and Azure Appfabric.


Instance acquisition and release times are critical metrics when evaluating the performance of dynamic scalability for applications. Other subjects of study derived from this work could be evaluation of Azure Drives and the NTFS storage abstraction.

Another aspect that is suitable for deeper studies is behavior evaluation of direct instance-to-instance TCP performance as this mechanism provides an alternative to the other storage services for communication between instances that has lower latency.

Finally, benchmarking suited for other cloud offerings by different vendors could be incorporated. However, comparison with other cloud platforms is also not studied in this paper primarily due to the differences in architectures.

References
Agarwal, D., & Prasad, S. K. (2012). AzureBench: Benchmarking the Storage Services of the Azure Cloud Platform. 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum (Vol. 0, pp. 1048–1057). Los Alamitos, CA, USA: IEEE Computer Society. 

Gunarathne, T., Zhang, B., Wu, T.-L., & Qiu, J. (2011). Portable Parallel Programming on Cloud and HPC: Scientific Applications of Twister4Azure. Utility and Cloud Computing, IEEE Internatonal Conference on (Vol. 0, pp. 97–104). Los Alamitos, CA, USA: IEEE Computer Society. 

Hill, Z., Li, J., Mao, M., Ruiz-Alvarez, A., & Humphrey, M. (2010). Early observations on the performance of Windows Azure. Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing, HPDC  ’10 (pp. 367–376). New York, NY, USA: ACM. 

Iosup, A., Ostermann, S., Yigitbasi, M. N., Prodan, R., Fahringer, T., & Epema, D. H. J. (2011). Performance Analysis of Cloud Computing Services for Many-Tasks Scientific Computing. IEEE Transactions on Parallel and Distributed Systems, 22(6), 931–945. 

Lu, W., Jackson, J., & Barga, R. (2010). AzureBlast: a case study of developing science applications on the cloud. Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing, HPDC  ’10 (pp. 413–420). New York, NY, USA: ACM. 

Roloff, E., Birck, F., Diener, M., Carissimi, A., & Navaux, P. O. A. (2012). Evaluating High Performance Computing on the Windows Azure Platform. 2012 IEEE Fifth International Conference on Cloud Computing (pp. 803–810). Los Alamitos, CA, USA: IEEE Computer Society. 





domingo, 23 de febrero de 2014

Discos Duros USB 3.0 ultra slim de última generación

La corporación Western Digital asegura otro segmento del mercado al lanzar su nueva línea de discos duros portatiles de la línea "Passport" o Pasaporte , al incorporar en sus características esenciales la tecnología USB 3.0 que permite un acceso de transferencia de datos de hasta 5GBPS cuando están conectados a un sistema que cuenta con dichos puertos de conexión.

Los nuevos modelos ; My Passport Ultra y My Passport Slim cuentan con una poderosa suite de software para encriptación y manejo de backup dedicado , así como una herramienta de monitoreo del status operacional del disco duro a nivel de hardware, tienen un tamaño bastante reducido y vienen en un chassis metálico que permite la disipación del poco calor que pueda generar la unidad interna al funcionar por largos períodos de tiempo.

Como la mayoría de estos dispositivos, no es recomendable dejarlos caer o someterlos a condiciones extremas de presión o temperatura, vienen con una garantía limitada a función de 3 años e incluyen un pouch o estuche especial para protegerlos a nivel estético.

Aquí pueden revisar más información acerca de estos nuevos discos ultra portatiles :

 Tabla de comparacion de modelos My Passport

Hasta la proxima amigos ! .....

Desarrollo de Video Juegos: 93 Mil Millones durante el 2013

El año 2013 representó un momento importante para la industria del video juego, pues grandes firmas como Microsoft, Sony y Nintendo lanzaron sus consolas de última generación, marcando la extensión del servicio de entretenimientos digitales más alla de experiencia clásica del juego de consola tradicional.

Según un reciente estudio de Gartner Group, el mercado mundial de los videojuegos tocó techo en 2013 con un crecimiento del 18%, para alcanzar un total de 93 mil millones de dólares en ventas durante el 2013. Se preveé que para el 2015 esta cifra alcance los 111 mil millones. La facturación y crecimiento de este sector de la industrial del entretenimiento, ha superado a los de la industria del cine, la música y el video. Lo que resulta aun más impresionante es que el segmento de los video juegos móviles presentan el sector con mas rápido desarrollo. Para el caso de los EEUU, ha pasado de generar un total de 11 mil millones a 21 mil millones en poco menos de 2 años.

Otro aspecto interesante de este fenómeno tecnológico de la industria del video juego, es que no solo tiene influencia en el aspecto económico, sino que además impulsa de manera integral el desarrollo de las tecnologías que actualmente convergen para generar la experiencia demandada por el usuario. Con esto me refiero a cuatro elementos fundamentales: capacidad de procesamiento computacional, contenido, dispositivos y ancho de banda. El software de entretenimiento es el responsable de generar una porción importante de todas las ventas y la innovación en cada de estas industrias relacionadas. 

Otro segmento que no escapa a los efectos del desarrollo y crecimiento de esta industria, es el mercado laboral. Hace unas semanas salio un estudio del mercado laboral de la industria de los videojuegos (Gamasutra Salary Survey). El objetivo de este estudio fue evaluar el rango de ingresos actuales de los diferentes trabajadores que integran y conforman la industria de los videojuegos. El estudio analizo el impacto de la crisis economica en el sector desde el punto de vistas de los ingresos de los asalariados del mercado laboral de los videojuegos. La conclusion es que el ingreso medio a nivel sueldos crecio una media del %7 durante el 2013 ascendiendo a los USD 79,000 anuales (durante el 2012 el ingreso medio llegaba tan solo a los USD 74,000).

¿Quienes tendrán los salarios mas altos? ¿Los programadores? ¿Los diseñadores? ¿Tal vez el equipo de ventas? Bueno, si, claramante la parte comercial son los que se llevan la mayor tajada. No obstante, desde el punto de vista de desarrollo de software, que es la parte que nos interesa, encontramos los siguientes resultados:
  • Programación: Representan algunos de los talentos mejor pagados en la industria del video juego, el salario promedio de los programadores aumento hasta 92,962 dólares comparado con 85,733 dólares respecto a años anteriores . 
  • Arte y Animación: Para los artistas y animadores los salarios medios aumentaron a 75,780 comparados con 71,354 con respecto del año anterior. 
  • Diseñador: Los diseñadores de juegos , escritores y directores creativos promediaron un paquete de 73,386 frente a 70,223 respecto al año anterior.
  • Tester y Quality Assurance: Los profesionales de control de calidad (QA testers) son los trabajadores con salarios más bajos en la industria de los juegos, su salario promedio disminuyó a 47,910 dólares comparados con 49,009 dólares del año anterior.
  • Negocios: para empresas y trabajadores legales siguen siendo los mejor pagados en la industria, pero sus salarios promediaron los 106,452 en 2010.
Caso República Dominicana:

En la caso especifico de la Republica Dominicana, apenas se empienzan a dar los primeros pasos para el incentivo en la generacion de empleos y la creacion de industrias en esta indole. VAP Dominicana es la primera empresa de talento local que se propone hacer “outsourcing” de videojuegos desde el país. Será una especie de zona franca que fabricará partes de videojuegos para exportarlas por encargo a estudios de Estados Unidos y Europa, donde terminaran de “ensamblarse”.

Con un capital semilla de US$100 mil para el primer año, el proyecto es uno de los 12 que conduce la incubadora de negocios de tecnologia Emprende, ubicada dentro del Parque Cibernetico. VAP se creó en respuesta a la propuesta del que será su primer cliente, Trilogy Studio, cuyo presidente, Michael Pole, visitó el país en 2006. Despues de dos fructiferas reuniones con casi un centenar de jovenes que presentaron videojuegos de calidad hechos con herramientas “rusticas”, Pole ofrecio contratar a la empresa que se animara a fabricar los videojuegos para el estudio. Los fundadores de Trilogy son ex empleados de Electronic Arts que hace tres años fundaron su propia empresa y dejaron el espacio donde crearon videojuegos tan famosos como Halo3 y Medal of Honor. La apuesta del estudio es desarrollar los mundos virtuales, que son videojuegos de bajo costo que cobran una suscripcion tipo World of Warcraft.

La empresa emergente se propone producir US$20 millones dentro de cinco años y capacitar, en ese periodo, entre 150 y 200 personas que podrán obtener un salario que evolucionará de un promedio de US$15mil a US$40 mil por año.

El “outsourcing” es para la industria del videojuego como el cemento y la varilla para un edificio. El mercado se estima en 30% de la industria y genera empleos en areas especializadas como programación, guión, diseño, creación de personajes y música. 

Los paises lideres en “outsourcing” de videojuegos son China, Irlanda, Europa del Este e India. “Para las empresas en Estados Unidos es complicado tener 13 horas de diferencia de horario con China y ciertas diferencias culturales y de idioma, que no permiten la comunicacion constante que este tipo de trabajos exige”. Desde el 2006 la República Dominicana, aspira a capturar una parte de ese mercado por la posicion estratégica del país y fomentar que se desarrollen otras empresas similares que motoricen esa actividad en el pais, junto con la animación para publicidad y cine. 

Pero aun falta superar la principal limitante que originalmente tiene la empresa: conseguir personal capacitado para alcanzar los niveles de produccion necesarios. Instituciones educativas nacionales deben desarrollar estrategias para crear un mecanismo efectivo para reclutamiento de talentos y formacion en las areas requeridas por la industria, especialmente en el componente de desarrollo de software complejo. Pero sobre esto abundaremos proximamente en otro post. Segun las demandas actuales los jóvenes interesados en incursionar en la industria del desarrollo de juegos, deben dominar una variedad de tecnologías entre las que se encuentran: C++, Java, OpenGL, DirectC, Blender, Maya, Photoshop, entre otros.

jueves, 13 de febrero de 2014

Algoritmos de Filtrado Colaborativo para Sistemas de Recomendación Automática

En los Sistemas de Recomendación existen dos paradigmas para la selección de elementos, basados en contenido y filtrado colaborativo. En los sistemas basados en contenido el usuario recibirá información similar a la que ha mostrado interés en el pasado, mientras en el filtrado colaborativo las sugerencias serán de elementos que han gustado a gente con intereses similares a los suyos.

En la literatura existente se describen los Sistemas de Recomendación basados en Filtrado Colaborativo (FC) como sistemas que trabajan recogiendo juicios humanos, expresados como votaciones, sobre una serie de ítems en un dominio dado, y tratan de emparejar personas que comparten las mismas necesidades o gustos [Herlocker et al. 1999; Pazzani 1999; Adomavicius and Tuzhilin 2005; Breese et al. 1998].  Los usuarios de un sistema colaborativo comparten sus valoraciones y opiniones con respecto a los ítems que conocen de forma que otros usuarios puedan decidir qué elección realizar. A cambio de compartir esta información, el sistema proporciona recomendaciones personalizadas para aquellos elementos que pueden resultar interesantes al usuario.

El proceso básico es hacer un esquema de concordancia entre la información que se tiene del perfil del usuario actual y los perfiles de otros usuarios que se tienen almacenados y de cuyas referencias se tiene conocimiento, a esto se le conoce como “filtrado colaborativo de vecindad más cercana”.



 Los algoritmos FC pueden ser agrupados en dos clases generales [Adomavicius and Tuzhilin 2005; Breese et al. 1998]: los basados en memoria, que se basan en una vecindad completa de usuarios y sus valoraciones para el cálculo de predicciones [Herlocker et al. 1999; Adomavicius and Tuzhilin 2005], y los basados en modelos, que usan esas valoraciones para aprender un modelo que será el usado para predecir [Ungar and Foster 1998; Kim and Yum 2005; Breese et al. 1998]. La información manejada en FC consta de una serie de ítems, usuarios y valoraciones proporcionada por los usuarios sobre esos ítems: el espacio del problema viene definido como una matriz de usuarios frente a ítems, en la que cada celda representa la puntuación de un usuario concreto referida a un ítem específico. 



Resolver un problema típico de FC implica predecir qué valores tendría un usuario para aquellos ítems que aún no ha puntuado, basándonos para ello en las valoraciones aportadas anteriormente por la comunidad de usuarios [Adomavicius and Tuzhilin 2005; Herlocker et al. 1999].

Sistemas de filtrado
Existen diversas formas de realizar un filtrado de información, dependiendo del algoritmo de aprendizaje empleado. Según [Vélez y Santos, 2006] existen dos formas de realizar un filtrado de información:

  •  Filtrado Colaborativo: se basa en las calificaciones que realizan los usuarios sobre un dominio.
  •  Filtrado de Contenido: se basa en el enfoque tradicional de recuperación de información por palabras claves.


El Filtrado Colaborativo se puede realizar aplicando diversas formas algorítmicas:

Algoritmo de Horting: Técnica basada en grafos en la cual los nodos son los objetos y las aristas entre nodos son indicadores de los grados de similitud entre dos objetos. Las predicciones se producen al recorrer el grafo entre nodos cercanos y combinando las informaciones entre objetos cercanos. 

Redes Bayesianas de Creencia: Las Redes Bayesianas de Creencias (RBC) también se  conocen como Redes de Creencias, Redes Probabilísticas Causales, Redes probabilísticas Gráficas. Una RBC es una red gráfica que representa relaciones probabilísticas entre variables. Las RBCs permiten razonar bajo incertidumbre y combinar las ventajas de una representación visual intuitiva con una base matemática en la probabilidad bayesiana P(A/B) = P(A,B)/P(B)

Similitud Basada en el Coseno: Esta similitud da una buena medida del “parecido” de dos  vectores en un espacio multidimensional, el espacio puede describir características de usuarios o  de ítems, tales como palabras claves. La similitud entre ítems es medida computando el coseno entre el Angulo entre estos dos, mediante la ecuación:

Redes Neuronales: Las Redes Neuronales (RN) proporcionan una forma muy conveniente de representación del conocimiento, donde los nodos representan objetos del proceso de recuperación de información como palabras claves y los enlaces representan la asociación ponderada de estos (relevancia). Las RN aplicadas al filtrado colaborativo son de reciente uso, en [Nasraoi, 2004], se desarrolla una aplicación de predicción de URLs que se dan como recomendación a los usuarios, según su perfil.

Correlación de Pearson: Es una métrica típica de similitud entre funciones de preferencias de usuarios o distancias de vectores. Los vectores comparados coinciden en una escala desde cero (no similares) a uno (coincidencia total), y -1 (diferencia total)


Desde el punto de vista científico-técnico, esta propuesta pretende abordar parte de los retos especificados como mejoras posibles a los mecanismos de filtrado. Inicialmente, nuestro modelo de sistemas estará basado en la Teoría de Vínculos Débiles de Granovetter, el cual afirma que el grado de coincidencia entre dos sistemas individuales varía directamente según la fuerza que los une o vincula entre sí. Nuestra decisión se fundamenta en el hecho de que la mayoría de los modelos sistémicos de filtros colaborativos emplean modelos de unión de lazos fuertes. Otro fallo fundamental de los actuales modelos existentes es que no relacionan de forma convincente las interacciones a un nivel micro con los modelos de nivel macro. Estudios estadísticos, al igual que cualitativos, ofrecen una buena muestra de investigación acerca de este fenómeno.

 Referencias:

[Adomavicius and Tuzhilin, 2005] Adomavicius, G., and A. Tuzhilin. 2005. Toward the next generation of recommender systems: A survey of the state-of-the-art and possible extensions. Ieee Transactions on Knowledge and Data Engineering 17 (6):734-749.

[Herrera-Viedma et. al., 2003] E. Herrera-Viedma, L. Olvera, E. Peis, C. Porcel. 2003. Revisión de los sistemas de recomendaciones para la recuperación de información. Tendencias de investigación en organización del conocimiento. Trends in knowledge organization research, José Antonio Frías, Ed. Críspulo Travieso, Universidad de Salamanca, 507-513.

[Herlocker et al. 1999] Herlocker, J. L., J. A. Konstan, A. Borchers, and J. Riedl. 1999. An algorithmic framework for performing collaborative filtering. In Sigir'99: Proceedings of 22nd International Conference on Research and Development in Information Retrieval, edited by M. Hearst, F. Gey and R. Tong. New York: Assoc Computing Machinery, 230-237.

[Ungar and Foster, 1998] Ungar, L. H., and D. P. Foster. 1998. Clustering Methods for Collaborative Filtering. Paper read at Proceedings of the Workshop on Recommendation Systems.

[Velez & Santos, 2006] Velez, O., C. Santos. 2006. Sistemas Recomendadores: Un enfoque desde los algoritmos genéticos. Industrial data, año/vol 9, número 001. Universidad Nacional Mayor Dan Marcos, Lima, Perú. 23-31.

Redes de Colaboración Científica para la Investigación Académica

En el siglo XXI y en los sucesivos siglos, la colaboración será fundamental para llevar a cabo proyectos de gran envergadura en cualquier ámbito y en especial cuando se trata de proyectos en ciencia y tecnología.

Tradicionalmente las instituciones de educación superior de la República Dominicana, han trabajado bajo un espíritu de competencia. Fenómeno que responde a la relativa juventud de la mayoría de las universidades, las cuales se encuentran en una etapa de consolidación y posicionamiento a nivel nacional y regional. Esta necesidad de diferenciación inicial, genera poderosas barreras de integración y de movilidad interinstitucional.

En la realidad dominicana la competencia dentro de los mercados de educación superior es, ante todo, de carácter posicional, en un doble sentido. En los niveles más altos, las instituciones compiten por los estudiantes más preferidos y los estudiantes compiten por oportunidades prestigiosas (Instituciones con alta reputación, selectivas, alta calidad, etc.) En cambio, a medida que se desciende en la jerarquía de las instituciones, la competencia adquiere un sentido distinto y se transforma, básicamente, en competencia por matrícula, y no calidad. En la parte más baja del mercado, las universidades dominicanas ya no pueden preocuparse de a quien ofrecen su servicio sino que deben actuar con una política de puertas abiertas y competirán simplemente por captar alumnos.

No obstante, las exigencias de los modelos educativos de las sociedades que intentan insertarse en las corrientes del desarrollo, demandan la generación de conocimiento a través de la investigación y las sinergias que produce una institución de múltiples propósitos y múltiples relaciones.

Las investigaciones en la República Dominicana están esparcidas a lo largo de las diferentes instituciones de educación superior y centros de investigación donde los especialistas trabajan de manera individual (islas científicas), privándose de la oportunidad de compartir logros y resultados que al aunar esfuerzos podrían generar aportes significativos al desarrollo de la ciencia y la técnica en el país. 

A pesar de las oportunidades que brinda el escenario nacional para acceder a conocimientos avanzados, desarrollar estrategias y participar en proyectos de investigación, existen algunos aspectos que impiden un desarrollo adecuado de las líneas de investigación en el país. El principal problema que debemos resolver para poder integrarnos al avance actual de la ciencia y la tecnología, es la colaboración interna. De ahí la conveniencia de aunar esfuerzos propios en la producción de conocimientos científicos y tecnológicos. 

Como lo ha planteado el Ministerio de Educación Superior Ciencia y Tecnología, la creación de redes de investigación y desarrollo es fundamental para potenciar el impacto de los resultados obtenidos de los proyectos de investigación, de ahí la importancia de la creación de herramientas que faciliten la vinculación y creación de estos grupos de profesionales con “intereses comunes y/o complementarios” en la investigación.

Nos encontramos ante una gran oportunidad de avanzar en los campos de la ciencia y la tecnología en el plano nacional y regional. El gran reto es como convertir en conocimiento útil la avalancha de información que se propaga a través de los diferentes medios de comunicación y como aprovechar el proceso de generación y apropiación del conocimiento para inducir procesos dinámicos de cambio social, a través de los cuales el conocimiento crea y fortalece capacidades y habilidades de personas u organizaciones que se lo apropian, convirtiéndose en un factor de cambio. Más importante aún, como aunar esfuerzos aislados en función de un interés científico colectivo que permita logros de mayor impacto a través de la colaboración interinstitucional.

En este sentido, la conformación de redes científicas mediante redes digitales de información está llamada a jugar un papel importante en los procesos de generación y apropiación del conocimiento.

Está demostrado que la vinculación de instituciones con actividad investigativa a través de redes, permite uno de los mayores flujos de cooperación e intercambio de información. Fomentar la creación de redes académicas de investigación en el ámbito nacional, introduce un componente dinámico que favorece las interacciones entre los diferentes actores. Estas redes proporcionan un mecanismo ideal para aquellos actores que se encuentran aislados, incluso en regiones con menor desarrollo científico, tecnológico o social. Este problema de asimétrica distribución de capacidades científicas y tecnológicas está presente en mayor o menor medida en todo el entorno regional. Por eso las redes que localicen y asocien individuos con intereses comunes, constituyen una alternativa para aliviar este problema. Especialmente en países como República Dominicana, donde existe una masa crítica insuficiente y debilidades en los grupos de investigación y desarrollo.

Este tipo de soluciones, permite no solo aprovechar la masa crítica existente, sino además, desarrollar sinergias derivadas de la colaboración entre grupos de investigación para abordar temas y proyectos de mayor envergadura y complejidad, mayor impacto científico, tecnológico, económico y social. 

Investigación en el contexto de Educación Superior en la República Dominicana

La ciencia y la tecnología son reconocidas actualmente como factores decisivos para la transformación económica y social, no sólo para los países industrializados, en los cuales se pone de manifiesto el surgimiento de una nueva economía del conocimiento, sino también para los países en vías de desarrollo. Este hecho hoy resulta muy evidente en el contexto de una revolución científica y tecnológica que domina la escena internacional y se ha convertido en un dato político y económico de primera magnitud. La República Dominicana no es ajena a este fenómeno, y lo demuestra a través de la aplicación de distintas iniciativas gubernamentales orientadas a impulsar la producción científica local. Como ejemplo concreto tenemos el Fondo Nacional de Innovación y Desarrollo Científico y Tecnológico (Fondocyt) dedicado a desarrollar y financiar actividades, programas y proyectos de innovación tecnológica e investigación científica aplicada apuntando a establecer un sistema de promoción permanente de la investigación científica y tecnológica nacional. 

A pesar de las oportunidades que brinda el escenario nacional para acceder a conocimientos avanzados, formar recursos humanos y desarrollar actividades de carácter científico, existen algunos aspectos que impiden un desarrollo adecuado de las líneas de investigación en el país. Uno de los principales problemas que debemos resolver para poder integrarnos en el avance actual de la ciencia y la tecnología, es la colaboración interna entre entidades y personal académico local en el proceso de producción de conocimientos científicos y tecnológicos. 

Dado el crecimiento y la incidencia del Internet y las capacidades que brinda para desarrollar procesos asociativos, representa este una herramienta ideal para el diseño de modelos que transformen la red de un espacio de información a un espacio de conocimientos y colaboración distribuida. Esta capacidad ha dado pautas a una auténtica revolución en las formas de llevar a cabo investigación, redundando en avances en el conocimiento y, más aún, en el uso social del mismo.

miércoles, 12 de febrero de 2014

Recuerdos de COMPUEXPO - República Dominicana

Toda una generación de niños y jóvenes que hoy ocupan posiciones gerenciales en importantes instituciones nacionales e internacionales o que han desarrollado sus propias empresas, crecimos teniendo a COMPUEXPO como el evento esperado por todos aquellos adeptos a los avances tecnológicos. En una era donde las comunicaciones apenas se empezaban a desarrollar, épocas que solo podíamos leer en revistas y libros que llegaban a las bibliotecas o traía algún conocido o que escuchábamos sobre tal o cual tendencia, producto, servicio o nuevo dispositivo, no era sino hasta octubre de cada año que podíamos ver, palpar y conocer a través de la COMPUEXPO.

A finales de la década de los 80 y principio de los 90, en un COMPUEXPO de turno, se presentó a los ejecutivos dominicanos la maravilla del FAX (facsímil): la solución de negocios capaz de transmitir copias de documentos a través de las líneas telefónicas. ¡Parecía magia! ¡Cuanto no hemos visto a partir de ahí! En mi caso particular, gracias a un evento de COMPUEXPO pude tocar por primer vez un computador y aprender con apenas 9 años, mis primeras instrucciones de programación en lenguaje LOGO, en unos de los salones del Hotel Concorde, en aquellas famosas computadoras Tandy 1000.

Luego, año tras año conocimos el modem, el mouse, las interfaces gráficas, los chats punto a punto, los servicios de redes de área local, los servidores, monitores a color, los video juegos, las comunicaciones móviles, la Internet, los GPS; solo por mencionar algunas de las que ahora aparentan ser simples aplicaciones pero que en su tiempo resultaron ser la novedad del momento.

No obstante, la tecnología como tal o más bien el uso de la tecnología, puede representar una amenaza cuando no se la comprende, pues se convierte en patrimonio de un grupo limitado de expertos a sueldo. Pero a la vez, representa una oportunidad de democratización cuando aumenta en gran medida el número de personas que si la comprenden. 

Nuevos retos nacen de manera constante, detrás de los avances que emergen cada día frente a la tecnología, la medicina, el medio ambiente y otros muchos aspectos de nuestra vida cotidiana. Al mismo tiempo, estos nuevos retos, demandan cada día más de recursos humanos con talentos excepcionales tales como: valores humanos, originalidad, la ética, la pasión y creatividad dentro de un área del ejercicio específico.

Bajo este contexto, cito a continuación las palabras del Mons. Núñez Collado, publicadas en su libro Computación y Educación Superior, escrito en 1986:

“Es evidente el influjo positivo de la tecnología sobre el progreso humano, pero no podemos perder de vista que en la etapa de desarrollo que vive el mundo, el desarrollo tecnológico en general y la ciencia de la información en particular podrían ejercen un impacto negativo, sino introducimos en el mundo tecnológico, ingredientes morales, valores trascendentes y un fin humano válido en si mismo que mantenga en el hombre su sentido de la equidad, de la dignidad y de la justicia. El mundo de mañana dependerá más de sus preceptos morales que de su abundancia en bienes materiales o de instrumentos de dominación y tendrá como ingredientes imprescindibles la dignidad individual y colectica, la capacidad de pensar, de decidir y actuar con libertad, con responsabilidad y nobleza espiritual.”

En el futuro inmediato, nuestra sociedad dominicana, enfrenta el reto de educar a los ingenieros del futuro, solucionadores de problemas, creadores de nuevo conocimiento, capaces de llegar más allá de simples implementaciones tecnológicas para satisfacer las necesidades humanas y sociales, e inspirados por la sed de innovación.

No obstante la intensión declarada, las labores para poder llevar a cabo esta misión se caracterizan por la obligación de lidiar con una nueva generación influenciada por:

  1. La realidad de que estamos viviendo en tiempos exponenciales. “Si a lo largo de los últimos 25 años la industria aeronáutica hubiese experimentado la espectacular evolución que ha vivido la informática, un Boeing 767 costaría hoy 350 dólares y circunvolaría el globo terrestre en 20 minutos, consumiendo o unos 20 litros de combustible.”
  2. Contexto de un mundo (sociedad) en estado de crisis de valores, limitado en sus recursos naturales y matizado por la desigualdad y la tensión social.
  3. Estamos formando individuos de generaciones que pertenecen a una sociedad móvil, acostumbrada a lo efímero y que ve el capital humano como un activo personal y no institucional. Por ende, no están dispuestos a hacer carrera y servir toda su vida en una institución. No buscan ser formados para ser empleados, quieren ser emprendedores.
  4. La cantidad de información nueva y relevante que se generará en el 2009 es de 4 exabytes (18 ceros). Esto quiere decir que la cantidad de información técnica nueva, se duplica cada 2 años. Para los estudiantes que inician una carrera de 4 años, 50% del conocimiento adquirido durante el primer año, será obsoleto antes de terminar el tercer año de estudios.
  5. Según un estudio del Departamento de Trabajo de los EEUU, los 10 puestos técnicos más solicitados en el 2009 no existían en el 2004. Esto se traduce en la necesidad de preparar estudiantes para tareas que aun no existen, usando tecnologías que una no han sido inventadas y para resolver problemas que aun no sabemos que son problemas.

Formal Methods and Project Planning for the Software Process

From my experience as a software developer and complex software projects managers, I had learn over time that to successfully execute software project besides having a hard working team, it is essential to count with a clearly defined plan that all parties understand and endorse. 

Over the past years we had tried to align our administrative process to comply with CMMI standards. However, in practice, being a medium size company achieving this intention is very expensive, time consuming and doesn’t pay off from the customers perspective. Small and medium software development companies represent the largest segment in the software development industry in the US.

I believe that there are real values to following the process, but I also think whether companies follow their CMMI processes depend in large part on their customers. In the federal government market, I found that it is a requirement in the Request for Quote, but the customer doesn't really want to pay the costs associated with it. Formal models such as CMMI have been developed without taking into account small businesses and their limitations; neither has been adapted to facilitate its adoption. This brings to my attention the following questions:
  • How to calculate / to evaluate the return-on-invest of introducing CMMI in small companies and specifically Project Planning practices.
  • How many developers must exist so that process improvement and project management with all its components (PP, PCM, etc.) saves money in a feasible time frame? 
  • Is it necessary (from an official CMMI point of view) to introduce expensive tools or is it possible that small companies realize CMMI level2 without any tools?
  • Is marketing the major reason why companies invest in this certification or are there real values in following the CMMI processes?
  • Do companies actually follow CMMI processes after certification?
The Reality 

Process improvement in small enterprises is a problem that has been studied with more interest since 2005 (Mondragon, 2006). Process improvement in small enterprises is naturally limited by the constraints of small businesses:
  1. Company Cash Flow: Proper cash flow instantiates resources on a process improvement project. In small companies (fewer than 25 employees) normally the agenda of technology experts are on assigned above 100%. In many cases small businesses are not competent when making estimates of effort and performance expectations of the team, neither on planning or formally managing it projects.
  2. People Skills: People with higher education usually have developed analytical thinking skills much stronger than people who do not have this training. The development of training guides and process guidelines are required to deploy a complete solution for process improvement.
  3. Project Size: Project size is a variable that directly affect the amount of communication, information and skills needed for proper performance. In large projects the software engineering practices become essential to produce work that meets the objectives to meet the requirements, meet the schedule, respecting the project's cost, provide the expected quality and achieve the expected productivity (Goldenson, 2010). In this particular aspect, project planning has a determinant role in regards to the project success.
Project planning done right can bring peace of mind and even outright relief to the most complex projects. On the other hand, project planning done wrong is easy to detect: The weeks and months of delays, a blown budget, angry clients and likely bad ending.

Many things lead to project success and many other leads to failure. Successful project depends on a combination of many variables including practices, experiences, methodologies, internal and external factors, etc. However, we can conclude that among those important variables, appropriate Project Planning is one of the primary indicators for high chances to succeed in a project.

PP Process Area requires excellent forward planning, which includes detailed planning of the process implementation stages, task timeliness, fallback positions, and re-planning. Initial planning is not enough. Projects often take wrong turns, or initial solutions prove unfounded. The project manager who does not prepare to re-plan, or has not considered and planned fall-back positions when initial plans fail, will often find that the project first stalls, and then fails. We must remember that project management is not a straight line process, but an iterative process that requires agile rethinking as the known environment changes before your eyes (Anil, 1991). 

Project failure is preventable with good project planning based on a well-constructed deliverables-based Work Breakdown Structure and proper controls. There may be some casualties along the way, such as some reduction in scope, additional time, and/or additional cost, but with good project planning and timely intervention where required, these can be minimized.

Finally, going formal represent a big step for small companies but is a decision that requires some sacrifices in working time and money. However this should not be an excuse for not taking the advantages of the formal methodologies. Implementing formal project management and proper planning could be a very good first step. After all, small business should ask themselves: How are we going to eat this elephant (CMMI)? The only possible answer is simple: In small bytes! As stated in the Practices topic, start crawling, follow these guidelines and before you know you might be walking.

It is important for a good manager, to be knowledgeable of this techniques and methodologies. Planning ahead is the best medicine. Prevention is the best of all cures.

References

Anil, Iyer and Thomasson, David (1991). “An Empirical Investigation of the Use of Content Analysis to Define the Variables Most Prevalent in Project Successes and Failures”, Proceedings of the 1991 PMI Annual Seminar/Symposium.

Mondragon, O. (2006). “Addressing infrastructure issues in very small settings. In Proceedings of the First International Research Workshop for Process Improvement in small Settings” Software Engineering Institute, Carnegie Melon University.

Goldenson, Dennis Herbsleb, and James (1995). “After the appraisal: A systematic survey of process improvement, its benefits and factors that influence success”. Technical Report CMU/SEI-95-TR-009, ADA302225, Software Engineering Institute, Carnegie Mellon University.