Ir al contenido principal

Diagrama de temas

    • 2.3 Seleccionar herramientas de la IA o AA

      • Herramientas de IA de código abierto

        Los siguientes son algunos ejemplos de herramientas de código abierto que se usan comúnmente en el aprendizaje automático y otras tareas de IA. El software de código abierto está libre de restricciones y cualquier persona lo puede utilizar, copiar, distribuir y modificar.
        Herramienta Descripción
        Lenguajes de programación

        Una variedad de lenguajes de programación está disponible para el aprendizaje automático.

        Los lenguajes Python® y R se utilizan con frecuencia, y se ha desarrollado un gran número de herramientas de soporte y bibliotecas de software en estos lenguajes para proporcionar un amplio soporte para la manipulación de conjuntos de datos, análisis estadístico, algoritmos de aprendizaje automático, visualización y otras capacidades relacionadas con IA/AA.

        También puede usar lenguajes empleados para el desarrollo de software general, como Java, C++, C#, etc., para IA/AA.

        Se siguen desarrollando nuevos lenguajes que están encontrando un uso significativo en IA/AA.

        Incluso los lenguajes muy antiguos utilizados tradicionalmente en el campo de la IA, como Lisp y Prolog, todavía están en uso hoy en día.

        NumPy

        Esta es una biblioteca para el lenguaje de programación Python. Una biblioteca de programación incluye código y otros recursos que los programadores pueden reutilizar en sus propios proyectos. NumPy, en particular, le permite crear y realizar cálculos matemáticos en arrays (matrices) grandes y multidimensionales. En programación, una matriz es una colección de valores u otros elementos.

        NumPy es una biblioteca fundamental para el aprendizaje automático con Python porque admite cálculos mucho más eficientes que las matrices estándar de Python, y las matrices NumPy pueden almacenar muchos tipos diferentes de datos.

        SciPy

        SciPy es otro componente de la pila de aprendizaje automático de Python, o una colección de componentes de software (como bibliotecas) que conforman una plataforma completa. Se basa en NumPy al ofrecer operaciones matemáticas más potentes, en particular las utilizadas en el campo de la computación científica. También incluye algunos de los otros componentes de aprendizaje automático que se tratan en esta tabla, incluidos pandas y Matplotlib.

        pandas
        La biblioteca pandas, parte de SciPy, admite estructuras de datos y funciones de análisis de datos para la programación de Python. En programación, una función es un fragmento de código que realiza una tarea específica y repetible. En el aprendizaje automático, el tipo de objeto pandas DataFrame es particularmente útil, ya que le permite cargar datos en una estructura similar a una hoja de cálculo (es decir, con filas y columnas). También puede utilizar varias funciones de pandas para describir y manipular datos en un DataFrame.
        Matplotlib Matplotlib, también parte de SciPy, incluye varios métodos para representar datos en gráficos. La representación de datos visualmente puede proporcionarle perspectivas nuevas y útiles sobre sus datos, lo que puede influir en su flujo de trabajo de datos (y en el propio proceso de entrenamiento). Matplotlib admite muchos tipos de técnicas de visualización.
        scikit-learn

        Si bien SciPy y sus módulos son fundamentales para el aprendizaje automático, scikit-learn en realidad implementa algoritmos de aprendizaje automático. Proporciona compatibilidad con algoritmos de aprendizaje automático fundamentales.

        NLTK Natural Language Toolkit (NLTK) es un conjunto de bibliotecas de Python que admiten el procesamiento de lenguaje natural (PLN). NTLK se utiliza más comúnmente como una herramienta de enseñanza para la teoría lingüística y la aplicación práctica. Brinda funcionalidad para la clasificación, tokenización, lematización y otras operaciones basadas en el lenguaje.
        Jupyter Notebook

        Jupyter Notebook es una aplicación web que permite a los usuarios crear, ver y compartir blocs de notas interactivos, archivos que incluyen código ejecutable en vivo, así como texto de marcado explicativo. El código de programa de un bloc de notas a menudo se separa en varios bloques y el usuario puede ejecutar cada bloque de forma independiente, secuencial o todos a la vez. Aunque no está diseñado en especial para el aprendizaje automático, Jupyter Notebook se utiliza a menudo para enseñar los principios de aprendizaje automático a través de un proceso instructivo práctico y paso a paso. Además de Python, Jupyter Notebook también admite código escrito en R y Julia.

        Anaconda

        Anaconda es una distribución de código abierto multiplataforma de muchas bibliotecas de ciencia de datos de Python y R, incluidas NumPy, SciPy, pandas, Matplotlib, scikit-learn, NTLK y muchas más. También incluye una interfaz gráfica de usuario (GUI) llamada Anaconda Navigator para administrar paquetes y ejecutar procesos. Debido a que incluye muchas de las bibliotecas que componen el aprendizaje automático de código abierto, Anaconda es a menudo el método preferido para configurar un entorno de aprendizaje automático en lugar de instalar cada componente de forma individual.

        Nota: En las actividades de este curso, se utiliza Anaconda.

      • Herramientas de IA patentadas


        Estos son algunos ejemplos de herramientas patentadas que se usan comúnmente en el aprendizaje automático y otras tareas de IA.
        Herramienta Descripción
        IBM® Watson

        Basado en el sistema que derrotó a los campeones reinantes en Jeopardy!, IBM ha vendido Watson como una solución de software para las empresas que están interesadas en incorporar el poder de la IA en sus aplicaciones. Watson no es solo un servicio, sino todo un paquete. Algunos productos de ejemplo de este paquete son:

        Watson OpenScale: una plataforma de gestión de proyectos de IA de nivel empresarial.

        Watson Assistant: un asistente virtual como Siri de Apple o Alexa de Amazon.

        Watson Machine Learning: una plataforma para entrenar una variedad de modelos de aprendizaje automático.

        Natural Language Understanding: un servicio de análisis de texto.

        Clasificador de lenguaje natural: un servicio de clasificación de lenguajes.

        Voz a texto y texto a voz: servicios para convertir de forma inteligente entre texto y voz.

        Reconocimiento visual: un servicio de clasificación de imágenes y videos.

        AWS® IA

        Amazon Web Services (AWS) es un proveedor de computación en la nube que ofrece muchos servicios diferentes. AWS proporciona estos servicios a los clientes bajo demanda, lo que significa que AWS pone su infraestructura y recursos informáticos en la nube a disposición de los clientes cuando sea necesario. Esta es una opción popular para las organizaciones, ya que pueden descargar algunas o todas sus operaciones de TI, incluidas las operaciones de IA, a un tercero. 

        Algunos ejemplos de servicios que se incluyen en la categoría de IA de AWS son:

        Amazon SageMaker: un servicio de aprendizaje automático y aprendizaje profundo administrado que admite plataformas como PyTorch y TensorFlow™.

        Amazon Forecast: un servicio de aprendizaje automático para el modelado predictivo.

        Amazon Comprehend: un servicio de análisis de texto.

        Amazon Lex: un servicio para crear chatbots.

        Amazon Polly: un convertidor inteligente de texto a voz.

        Amazon Transcribe: un convertidor inteligente de voz a texto.

        Amazon Rekognition: un servicio para analizar imágenes y video.

        AWS DeepRacer: un coche de carreras de juego autónomo y el entorno en la nube que lo acompaña para entrenar el coche de carreras mediante el aprendizaje por refuerzo. Esta es principalmente una herramienta de enseñanza para aquellos nuevos en el aprendizaje automático.

        Microsoft® Azure® IA

        Al igual que AWS, Microsoft Azure es un servicio de computación en la nube bajo demanda. Si bien AWS ha mantenido la cuota de mercado en este sector durante varios años, a partir de 2019, Azure está empezando a rivalizar con AWS. Algunos servicios que forman parte de la plataforma Azure AI incluyen:

        Azure Machine Learning: un servicio de aprendizaje automático y aprendizaje profundo administrado que admite plataformas como scikit-learn, PyTorch y TensorFlow.

        Azure Databricks: un servicio que se integra con Apache Spark para la informática en clúster, al tiempo que admite muchas de las bibliotecas de aprendizaje automático de código abierto descritas anteriormente.

        Cognitive Services: una colección de servicios de visión artificial y PLN para comprender y procesar voz y texto, así como para identificar y subtitular imágenes y videos.

        Búsqueda de Azure: un servicio que aprovecha el PLN y la visión artificial para proporcionar búsquedas impulsadas por IA.

        Azure Bot Service: un servicio para crear chatbots.

        Google Cloud™ AI

        Google Cloud es el tercero de los tres principales proveedores de computación en la nube bajo demanda. Aunque no tiene la misma cuota de mercado que AWS o Microsoft Azure, Google ofrece una sólida cartera de IA de sus servicios en la nube. Ejemplos de algunos de esos servicios incluyen:

        AI Hub: un repositorio central para compartir contenido de IA de forma privada dentro de una organización.

        Plataforma de IA: una colección de herramientas que ayudan a los profesionales del aprendizaje automático a diseñar, crear e implementar proyectos de IA.

        Cloud AutoML: un servicio administrado para principiantes para entrenar modelos de aprendizaje automático. Google normalmente ofrece versiones autoML de sus diversos servicios de IA, además de las API estándar que incluyen modelos previamente entrenados.

        Lenguaje natural en la nube: una colección de servicios de PLN para comprender y procesar voz y texto.

        Cloud Text-to-Speech y Cloud Speech-to-Text: servicios de conversión que aprovechan el aprendizaje automático.

        Vision AI: un servicio para la detección y clasificación de objetos en imágenes.

        Video Intelligence: un servicio para la detección y clasificación de objetos en video.

        MATLAB® MATLAB (laboratorio de matrices), desarrollado por MathWorks, es un entorno de computación numérica y lenguaje de programación que admite la manipulación de matrices, visualización, implementación de algoritmos y la creación de interfaces de usuario. Los programas desarrollados en MATLAB pueden interactuar con programas escritos en otros lenguajes como Python, C++, C#, Java y Fortran.
        Mathematica® Mathematica, desarrollado por Wolfram Research, proporciona un entorno informático técnico y lenguaje de programación que admite la ciencia de datos, el aprendizaje automático, las redes neuronales, el procesamiento de imágenes y muchas otras funciones informáticas. El programa incluye un backend o kernel de procesamiento que los usuarios programan a través de herramientas proporcionadas en la interfaz de usuario, utilizando Wolfram Language.
        Tableau® Tableau como herramienta de análisis y visualización de datos que proporciona capacidades para la preparación de datos, el descubrimiento de datos, la visualización, los paneles interactivos y la publicación de resultados en línea.
        Power BI® Power BI, desarrollado por Microsoft, es un servicio de análisis empresarial que proporciona funcionalidades de almacenamiento de datos que incluyen preparación de datos, detección de datos, visualización y paneles interactivos, a los que los usuarios pueden tener acceso a través de una interfaz de usuario local denominada Power BI Desktop.


        Herramientas adicionales de IA de Google

        Google también ofrece herramientas de IA fuera de su plataforma de servicios en la nube, que incluyen:

        ML Kit: una colección de herramientas de aprendizaje automático para desarrolladores de aplicaciones móviles proporcionadas en la plataforma Firebase de Google.

        DeepDream: un programa que utiliza redes neuronales para transformar imágenes, haciéndolas más "oníricas".

        Búsqueda de conjuntos de datos: un sitio web que le permite buscar conjuntos de datos para usarlos en proyectos de aprendizaje automático.

      • Herramientas y tecnologías nuevas que se agregan


        Constantemente se añaden nuevas herramientas y tecnologías a la caja de herramientas de IA/AA. Las nuevas capacidades tienen el potencial de acelerar masivamente ciertos tipos de soluciones de aprendizaje automático, particularmente aquellas que simulan la naturaleza.

        Para los profesionales de IA, las nuevas herramientas y tecnologías pueden ser una espada de doble filo. Proporcionan herramientas adicionales para preparar conjuntos de datos, resolver problemas y presentar resultados. Y aunque pueden facilitar algunas tareas, pueden aumentar los requisitos de hardware y agregar complejidad a los proyectos.

        Para obtener resultados coherentes y garantizar que el código se compile y ejecute correctamente, debe asegurarse de que todos en el equipo usen las mismas versiones de software. Si una persona utiliza funciones de una biblioteca de software determinada, otros miembros del equipo deberán asegurarse de tener la misma biblioteca instalada en sus equipos de desarrollo.

      • Requisitos de hardware


        Como se explicó anteriormente, el entrenamiento de modelos de aprendizaje automático requiere el procesamiento de una gran cantidad de datos. Dependiendo de la complejidad de los datos y el algoritmo, el entrenamiento requiere mucho tiempo de procesamiento y memoria del computador. La elección del entorno de hardware adecuado afectará significativamente a la rapidez con la que puede entrenar un modelo. Algunos de los principales factores que componen estos entornos incluyen:

        Unidades GPU y CPU
        Paralelización
        Computación en la nube y plataformas de datos

      • Unidades GPU y CPU


        El tipo de procesadores que agregue es importante. Para las tareas de aprendizaje profundo, las unidades de procesamiento de gráficos (GPU), que son los chips de la computadora que normalmente se utilizan como componente principal en los adaptadores de los gráficos, a menudo son más adecuadas que las unidades de procesamiento central (CPU), que se usan normalmente como procesador principal en computadoras personales y servidores. Las CPU Están optimizadas para procesar pequeñas cantidades de memoria con rapidez. Por otro lado, las GPU están optimizadas para procesar grandes cantidades de memoria a la vez, que es exactamente el tipo de tarea que se realiza durante el procesamiento de un video. Esta es la razón por la que los adaptadores de gráficos utilizan GPU. Al igual que con el procesamiento de video, muchas tareas de aprendizaje profundo implican operaciones de matriz, que esencialmente realicen operaciones en todos los elementos de datos con una grande estructura a la vez, de modo que los procesadores optimizados para procesar grandes cantidades de memoria a la vez pueden mejorar significativamente el rendimiento.

        Comparar una CPU y una GPU es un poco como comparar un auto deportivo con un camión grande de reparto. El auto deportivo puede llevar solo una pequeña carga, pero es ágil y puede detenerse, dar la vuelta y recoger a los pasajeros rápidamente. Los camiones grandes de reparto no son tan ágiles, pero pueden transportar una carga mucho mayor. Del mismo modo, las CPU son ágiles, pero están diseñadas para trabajar con pequeñas cantidades de memoria a la vez. Ellas compensan su pequeño ancho de banda de memoria al poder cargar y descargar datos de la memoria con rapidez. Las GPU, por otro lado, son como los grandes camiones de reparto cuando se trata de procesar datos. Tienen un ancho de banda de memoria mucho mayor que las CPU, lo que las hace adecuadas para tareas de aprendizaje profundo, la cuales a menudo implican el procesamiento de grandes lotes de memoria.

        Por supuesto, hay cierta latencia (o retraso) en el tiempo que demora la GPU en acceder a estos grandes lotes de memoria. En el aprendizaje profundo, esto se controla mediante el uso de varias GPU en paralelo. Es como tener una línea de camiones grandes cargando paquetes en un almacén. Si siempre hay suficientes camiones estacionados en el muelle de carga, los paquetes se pueden transportar continuamente desde el almacén a los camiones, sin tener que esperar a que otro camión vacío ingrese hasta el muelle de carga.

      • Paralelización


        Para reducir la cantidad de tiempo necesario para ejecutar un algoritmo de entrenamiento, es posible que necesite escalar verticalmente el hardware o agregar más recursos para satisfacer la demanda. En algunos casos, puede escalar verticalmente adecuadamente agregando más procesadores a un único computador. Al escalar en cantidades relativamente pequeñas, un único computador puede ser realmente más rápido que varios computadores porque evita los retrasos causados por las redes.

        Sin embargo, para un escalamiento masivo, se necesitan varias máquinas. La paralelización le permite escalar verticalmente el rendimiento de su entorno de aprendizaje automático dividiendo las tareas entre varios procesadores. Esto implica establecer una configuración de hardware con más procesadores y memoria, proporcionar el software y la configuración adecuados para admitirlos y usar algoritmos de aprendizaje automático que puedan dividir las tareas de computación en varias subtareas que luego se pueden delegar a varios procesadores que se ejecutan en paralelo.

        La paralelización puede reducir significativamente el tiempo necesario para ejecutar un algoritmo de entrenamiento; por ejemplo, de varias semanas a solo unas pocas horas en algunos casos. Esto ahorra tiempo, lo que hace que sea más práctico experimentar con varios modelos. Esto permite volver a entrenar los modelos con datos nuevos con más frecuencia. Agregar potencia de procesamiento a través de la paralelización también hace que sea más práctico ajustar con precisión sus modelos, lo que le permite alcanzar niveles de rendimiento que, de otro modo, tardarían demasiado tiempo en entrenarse.

      • Computación en la nube y plataformas de datos

        En lugar de comprar tarjetas GPU y configurar su propio hardware, puede obtener capacidades similares mediante un servicio de alojamiento en la nube como Amazon AWS, Microsoft Azure o Google Cloud.

        Amazon Web Services y Microsoft Azure le permiten crear instancias de máquina virtual de GPU, que puede escalar de manera ascendente y descendente (eliminar recursos para hacer frente a la disminución de la demanda) según sea necesario. Una máquina virtual (VM) es un software que simula un computador físico completo. Debido a que varias VM se pueden ejecutar en un computador existente, son más eficaces que si se contara con un conjunto físico real de hardware para cada sistema. Es por eso que son esenciales para los servicios en la nube.

        Al suscribirse a un servicio en la nube, puede crear recursos a medida que los necesite. El pago de los recursos está basado en el uso. Por ejemplo, cuando solo esté experimentando, puede crear una máquina virtual con solo una cantidad limitada de poder de procesamiento y asegurarse de que se apague cuando no la está utilizando. Más adelante, cuando necesite una potencia de procesamiento adicional para entrenar el modelo, puede escalarlo eligiendo una máquina virtual de tamaño diferente. Sin embargo, los costos al utilizar estos servicios pueden aumentar rápidamente, por lo que para experimentar, crear prototipos y avanzar con el aprendizaje, es posible que le resulte más rentable configurar algunas GPU más económicas en su propio hardware local y, a continuación, mover sus proyectos a servicios en la nube solo cuando necesite escalar de forma masiva.

        Google Cloud ofrece un producto llamado Tensor Processing Unit (TPU)™ (unidad de procesamiento tensorial), que puede ser más rentable para algunos proyectos. TPU es esencialmente un conjunto de GPU especializadas que se han empaquetado juntas específicamente para admitir operaciones de matriz rápidas. Las TPU se diseñaron con una sofisticada infraestructura de paralelización. Una única TPU en la nube tiene importantes beneficios en cuanto a la velocidad sobre varias GPU y, potencialmente, un menor costo.

        Sin embargo, debido a que las TPU son un producto más personalizado (o empaquetado) que las GPU sin procesar, es posible que no sean tan versátiles o flexibles. Para las tareas en las que se pueden utilizar las TPU, estas son una opción más eficaz y rentable. Cuando necesite mayor flexibilidad, utilice las GPU hospedadas en la nube. Mediante el uso de estos recursos de la nube, puede cambiar libremente entre ellos en función de sus necesidades. Por supuesto, se usan de manera un poco diferente, por lo que cambiar entre ellos significa aprender a usar ambos y tomarse el tiempo para configurar sus proyectos para trabajar con uno u otro. Además, desarrollar un flujo de trabajo sin problemas entre la GPU y las TPU puede ser un desafío; tenga en cuenta esto si está considerando una solución que implique ambos tipos de unidades de procesamiento.

      • Entornos de software de AA


        Los entornos de software utilizados para los proyectos de aprendizaje automático a menudo se ensamblan a partir de cientos de componentes diferentes, incluida una plataforma host (como Linux® o Windows®), un entorno de programación (como Python o R), repositorios de datos en línea y servicios en la nube, y bibliotecas de software utilizadas para realizar diferentes tipos de tareas (como pandas, scikit-learn y Matplotlib). Estas bibliotecas de software, en particular, pueden tener muchas interdependencias que pueden afectar a si sus proyectos se ejecutarán o no y los resultados que producen. Documente cuidadosamente las herramientas y versiones que utiliza el modelo, para que usted (o cualquier persona que herede su proyecto) pueda reconstruir el entorno correcto más adelante, si es necesario.

      • Python


        Python es un lenguaje de programación interpretado de alto nivel, orientado a objetos con una sintaxis fácil de aprender, cerca del inglés, que enfatiza la legibilidad. Su baja curva de aprendizaje y la facilidad de uso hacen que el mantenimiento de programas basados en Python sea más fácil y menos costoso, y admite una variedad de módulos y paquetes para su uso en ciencia de datos, IA y AA.

        Python 3 es la última versión principal del lenguaje. Python 3.9.0 se lanzó a finales de 2020 y se actualiza constantemente.

        Dado que Python es un lenguaje de programación de uso general, puede usarlo para desarrollar muchos tipos diferentes de aplicaciones, entre las que se incluyen:

               - Herramientas de análisis y previsión de datos
               Inteligencia artificial
               Aplicaciones web
               Videojuegos
               Aplicaciones de audio y video
               Aplicaciones móviles
               Aplicaciones de redes
               Aplicaciones científicas y matemáticas
               Herramientas de seguridad
               Aplicaciones educativas

        Python es uno de los lenguajes de programación más populares del mundo y muchas organizaciones conocidas lo utilizan en el desarrollo de su software. Google, la Administración Nacional de Aeronáutica y del Espacio (NASA) y muchas otras han utilizado Python. Aquí encontrará una lista de aplicaciones que se han desarrollado total o parcialmente mediante Python y con las que puede estar familiarizado.

        Instagram®, una popular aplicación de redes sociales para compartir fotos/videos
        Spotify®, un servicio popular de transmisión de música
        Dropbox®, un servicio de alojamiento de archivos basado en la nube
        PyCharm®, una herramienta de programación
        Django®, una plataforma de desarrollo web de código abierto
        Blender™, una aplicación de arte y animación 3D
        ERP5, poderoso software de negocios de código abierto utilizado en el sector aeroespacial, bancario y gubernamental


      • Selección de herramientas de IA o AA


        Escenario

        Antes de empezar a desarrollar modelos de aprendizaje automático, debe tener un sistema en el cual trabajar. Si bien hay formas de trabajar completamente en sistemas alojados en la nube, otra opción es instalar software en sus propios computadores. Tiene muchas opciones para configurar su propia pila de software de aprendizaje automático, por lo que en algún momento deberá determinar qué software desea usar.

        1. Descubra herramientas de aprendizaje automático en GitHub.

        1. En su explorador web, abra el sitio web github.com
        GitHub es un sitio de alojamiento popular para los desarrolladores de software. Este sitio aloja varias herramientas de aprendizaje automático que puede descargar.

        2. En el cuadro de búsqueda del sitio web de GitHub, escriba el término de búsqueda aprendizaje automático y examine los resultados.

        3. Encontrará miles de proyectos, incluidas listas seleccionadas, libros electrónicos, ejemplos de datos, código y herramientas de software. Sitios como GitHub pueden ser un gran recurso para su aprendizaje continuo, aunque explorar por los listados puede llevar mucho tiempo.
        En el cuadro de búsqueda, escriba el término de búsqueda scikit-learn y examine los resultados.
        Se muestran miles de proyectos relacionados con scikit-learn, incluido el repositorio de la biblioteca de software scikit-learn real para Python, que se llama scikit-learn/scikit-learn.

        4. Seleccione el vínculo scikit-learn/scikit-learn.
        Se muestra el repositorio de archivos para el proyecto. Desde esta página, puede descargar los archivos del proyecto directamente. Sin embargo, dependiendo del sistema que esté utilizando, puede haber mejores maneras de realizar la instalación.

        5. Desplácese hacia abajo para ver la sección Léame.


        Las herramientas alojadas en GitHub a menudo proporcionan un archivo Léame que explica el propósito general de la herramienta. Por ejemplo, scikit-learn es un módulo de Python que permite el uso de aprendizaje automático.
        Normalmente, el archivo Léame también identifica dónde puede encontrar el sitio web del proyecto, la documentación, las notas importantes, etc.
        El archivo Léame también puede identificar cómo realizar la instalación en diferentes plataformas. Por ejemplo, puede usar el comando Python pip para agregar scikit-learn a una configuración de Python, o puede usar el comando Anaconda conda para instalar scikit-learn en un computador que tenga instalado Anaconda.
        El archivo Léame también puede indicar las dependencias necesarias para ejecutar la herramienta. Estas dependencias suelen ser otras bibliotecas de programación que forman parte de la pila de software.


        2. Examine un paquete de software de aprendizaje automático.
        1. En el explorador web, abra el sitio web anaconda.com
        2. En el menú, seleccione Productos→ Edición individual.
        3. Lea la descripción de Anaconda.
        4. Cierre el explorador web.
        No descargue los archivos a menos que su instructor se lo indique. Si está configurando su propio computador, debe descargar los archivos adecuados para su sistema operativo e instalar el paquete.