Contenido


Ejecución de IPython Notebook en IBM Bluemix

Comments

IPython Notebook es un entorno basado en la web para computación interactiva y análisis reproducible. Puede escribir código en un notebook en su navegador web, ejecutarlo con el clic de un botón y ver el resultado en el navegador.

El bucle de retroalimentación ajustado entre la codificación y la exploración — y la habilidad de incluir texto Markdown , medios de la web y widgets interactivos en el propio notebook — hace de IPython un entorno poderoso para jugar con datos y nuevas ideas:

IPython Notebook screenshot
IPython Notebook screenshot

Bluemix facilita el despliegue de una instancia de IPython Notebook para usarla sobre la marcha. Este artículo abarca los pasos necesarios para poner a funcionar un servidor notebook junto a algunos paquetes de computación científica populares de Python: numpy, Pandas y matplotlib.

Además, usted definirá una contraseña para el servidor notebook como un medio básico de seguridad. Finalmente, abordaré algunas ideas que usted puede implementar (o no) en su entorno de notebook.

Visitar un servidor de muestraObtener el Código

Nota: El servidor de muestra está configurado con una contraseña en blanco y su acceso es libre para todos los usuarios. ¡No lo utilice para un trabajo real!

Bluemix facilita el despliegue de una instancia de IPython Notebook para usarla sobre la marcha.

Lo que necesitará

Paso 1. Obtener el código

Clone el código de origen del proyecto parente | ipython-on-bluemix en IBM DevOps Services:

 git clone https://hub.jazz.net/git/parente/ipython-on-bluemix

Si planea trabajar con la receta más adelante (por ejemplo, añadir bibliotecas de computación científica adicionales al entorno de notebook), debería considerar obtener una cuenta de DevOps Services y, en cambio, bifurcar el repositorio. Luego, clone su bifurcación con el comando git clone https://hub.jazz.net/git/your DevOps Services username/ipython-on-bluemix.

Paso 2. Revisar el código

No necesita entender el código para ejecutarlo. Si solo desea ejecutar notebook, siéntase libre de ignorar este paso.

Si le echa un vistazo al código, verá que no hay mucho que hacer. El archivo manifest.yml contiene instrucciones de Bluemix acerca de cómo desplegar su instancia de IPython Notebook. Establece el nombre de la aplicación, cantidad de memoria para asignar, el nombre de host para definir, etc.:

 --- applications: - name: ipython memory: 1G instances: 1 host: ipython-${random-word} domain: mybluemix.net path: . buildpack: https://github.com/joshuamckenty/heroku-buildpack-python

El archivo requirements.txt contiene la lista de bibliotecas que el buildpack instalará. Puede añadir o eliminar bibliotecas aquí:

 ipython[notebook] numpy pandas matplotlib

Finalmente, Procfile instruye a Bluemix acerca de cómo ejecutar su aplicación luego de ser construida:

 web: ipython profile create; echo "c.NotebookApp.password = '$( python -c 'from IPython.lib import passwd; import os; print passwd(os.environ.get("PASSWORD", ""))' )'" >> ~/.ipython/profile_default/ipython_notebook_config.py; ipython notebook --port=$VCAP_APP_PORT --ip=$VCAP_APP_HOST --no-mathjax

Esta es la parte más complicada de la solución. (Y también la más engorrosa, porque debe ser una línea única. Aquí, se muestra en líneas separadas solo para fines de legibilidad). De manera detallada, el código:

  1. Crea un perfil del usuario de IPython.
  2. Genera un hash seguro de la variable de entorno PASSWORD y la introduce al perfil.
  3. Inicia el servidor notebook con la información de puerto y host proporcionada por Bluemix.

Paso 3. Introducir el paquete de la aplicación en Bluemix

Utilice la herramienta de línea de comando cf para apuntar a Bluemix, inicie sesión e introduzca su paquete de notebook.

En un shell de comando local, ejecute los siguientes comandos, respondiendo a cualquier prompt a medida que avanza:

 cd ipython-on-bluemix cf api https://api.ng.bluemix.net cf login cf push --no-start

Paso 4. Definir una contraseña

Como Bluemix ya reconoce su aplicación, usted le puede definir una contraseña con el siguiente comando en un sistema operativo *nix u OS X. El subcomando le solicita que ingrese una contraseña y luego hace eco de ella para que el comando cf la utilice:

 cf set-env ipython PASSWORD $( echo -n "Password: " && read -s PASSWORD && echo $PASSWORD )

Si su shell no soporta read (por ejemplo, en Windows) o le preocupa que la contraseña aparezca en la historia de entradas de la consola, puede establecerla directamente. Aquí, mi contraseña sería mysecretpassword:

 cf set-env ipython PASSWORD mysecretpassword

Nota: El comando cf podría sugerirle que utilice cf push para asegurar que los cambios en la variable de entorno surtan efecto. En esta oportunidad, no necesita introducirlo porque no ha iniciado la aplicación.

Paso 5. Desplegar la aplicación

Ahora que se ha introducido y configurado el entorno de la aplicación, puede desplegar la aplicación con el siguiente comando:

 cf start ipython

Este comando podría ejecutarse por un tiempo, mientras Bluemix construye e instala las dependencias listadas en el archivo requirements.txt. Puede monitorear su progreso al ejecutar el siguiente comando:

 cf logs --recent ipython

De hecho, a veces, el buildpack tarda tanto que Bluemix lo considera un error de transferencia, incluso si finaliza correctamente. Si recibió ese error en la consola, ejecute el comando cf logs algunas veces para verificar si ha avanzado la transferencia de la aplicación. Si ve progreso, deje que el procesamiento siga hasta ver la siguiente línea en el registro:

 Successfully installed ipython numpy pandas matplotlib tornado pyzmq jinja2 python-dateutil pytz pyparsing nose backports.ssl-match-hostname markupsafe six Cleaning up...

Luego, ejecute los siguientes comandos para que la aplicación se ejecute correctamente:

 cf stop ipython cf start ipython

Puede confirmar que el servidor notebook se esté ejecutando de manera adecuada consultando su estatus:

 cf app ipython

Inspeccione el resultado para asegurarse de que la instancia de la aplicación posea el estadoen ejecución :

 Showing health and status for app ipython in org pparent@us.ibm.com / space dev as pparent@us.ibm.com... OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: ipython-unspecious-subconsul.mybluemix.net state since cpu memory disk #0 running 2014-05-28 09:10:09 PM 0.4% 149.1M of 1G 282.5M of 1G

Paso 6. Utilizar IPython Notebook

La instancia de IPython Notebook ya funciona. Visítela en su navegador con el URL mencionado en el resultado del último comando ejecutado en el Paso 5. Por ejemplo, en función del resultado de ejemplo al final del Paso 5, usted visitaría https://ipython-unspecious-subconsul.mybluemix.net.

Cuando el servidor notebook se lo solicite, ingrese la contraseña definida en el Paso 4. Si ignoró ese paso, la contraseña está en blanco, así que solo presione laTecla Intro:

Screenshot of the IPython Notebook login page
Screenshot of the IPython Notebook login page

En la página del panel de instrumentos, haga clic en Nuevo notebook para abrir un notebook en blanco en una nueva pestaña del navegador:

Screenshot of a new IPython Notebook
Screenshot of a new IPython Notebook

En su nuevo notebook, ingrese %matplotlib inline en la primera célula y haga clic en el botón Ejecutar en la barra de herramientas.

Haga lo mismo para los siguientes tres bloques de código, coloque cada uno en su propia célula y ejecute esa célula:

 import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 4*np.pi, 0.05) y = [np.sin(i) for i in x] plt.plot(x, y)

Al final, deberá ver un gráfico de onda sinusoidal sencillo:

Screenshot of sine wave plot in a notebook
Screenshot of sine wave plot in a notebook

Vaya más allá

El gráfico sencillo al final del Paso 6 es solo la punta del iceberg acerca de lo que puede hacer con IPython Notebook. Les presento algunas ideas que puede implementar para una mayor exploración:

  • Visite el sitio web nbviewer o busque notebooks públicos para aprender más acerca de lo que puede hacer en su nuevo entorno. Puede descargar cualquier notebook que encuentre y, luego, subirlo al panel de instrumentos de su servidor notebook para explorarlo.
  • Instale algunos paquetes adicionales, como scikit-learn (aprendizaje de máquina), nltk (procesamiento con lenguaje natural) y PyMC (modelo estadístico Bayesiano). Puede añadirlos a requirements.txt y redesplegar. Como alternativa, puede instalarlos al realizar shell a bash en la interfaz del notebook con una célula de código como !pip install scikit-learn— pero consulte "Limitaciones y alternativaspara más información acerca de este enfoque.
  • Conecte servicios de Bluemix a la instancia de notebook para explorar de manera interactiva las API a través de un notebook. Consulte la documentación de Bluemix para obtener información acerca de cómo añadir servicios a su aplicación y acceder a las respectivas API.
  • Revise el menú Ayuda en su notebook para obtener atajos de teclado y mejorar su competencia.

Limitaciones y alternativas

En este artículo, usted desplegó una instancia de IPython Notebook en Bluemix. Aunque el proceso sea relativamente sencillo, el resultado tiene sus limitaciones.

Actualmente, no es posible cambiarle el nombre a un notebook, porque el enrutador de Bluemix no soporta el método HTTP utilizado por el servidor de IPython Notebook.

Bluemix está optimizado para hospedar servidores web de E/S pesadas y sin estado y espera que una aplicación se comporte de esa forma. Por ejemplo, Bluemix limita el espacio de memoria de la aplicación al límite especificado en el archivo manifest.yml. Si realiza un trabajo de computación en un notebook que consume más RAM del que está asignado, Bluemix podría detenerse y reiniciar el servidor. Bluemix podría hacer lo mismo si su uso promedio de CPU supera el umbral configurado por el proveedor— por ejemplo, si realiza un trabajo de computación que utiliza mucho CPU. También puede ocurrir si intenta instalar paquetes adicionales al utilizar pip como se menciona en la sección "Vaya más allá ".

Finalmente, el espacio de disco asignado en su servidor notebook es efímero y no durará a largo plazo.

Si planea utilizar IPython Notebook con toda seriedad, puede superar estos problemas al desplegar una instancia duradera en IBM SoftLayer. Mejor aún, puede hacerlo con una imagen de contenedor de Docker, lo que elimina la necesidad de construir e instalar todas las dependencias necesarias. Siga en sintonía para un próximo artículo acerca de este mismo tema.


Recursos para Descargar


Temas relacionados


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing
ArticleID=1019983
ArticleTitle=Ejecución de IPython Notebook en IBM Bluemix
publish-date=12082015