Logotipo de Zephyrnet

cuML: entrenamiento de modelo de aprendizaje automático ultrarrápido con RAPIDS de NVIDIA

Fecha:

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

e Learning arena durante bastante tiempo o acaba de ingresar a esta emocionante vía: seguramente se ha topado con la popular biblioteca de construcción de modelos de aprendizaje automático de Python, lo adivinó correctamente, aprende Scikit. Scikit learn o sklearn, una de las bibliotecas más sólidas de Python, amplía una variedad de herramientas eficientes para el aprendizaje automático y el modelado estadístico, incluidos clasificadores, regresores, modelos de agrupamiento y módulos de reducción de dimensionalidad.

Para ser entrenados, estos modelos de Machine Learning deben ser alimentados con datos de entrenamiento. Sabemos que los datos se generan cada milisegundo de manera superflua, lo que abre enormes perspectivas para que estos modelos ML se entrenen con una precisión asombrosa. A pesar de sus diversas herramientas y capacidades de creación de modelos, sklearn tiende a gastar una gran cantidad de tiempo cuando se trata de manejar grandes cantidades de datos, lo que provoca retrasos en los flujos de trabajo de ML/DL y hace que todo el proceso sea engorroso. Esta velocidad limitada de Scikit Learn se debe a que funciona en CPU que solo tienen 8 núcleos. Sin embargo, con la aceleración de GPU, uno puede hacer uso de los aspectos de la computación paralela y más no. de núcleos para acelerar la velocidad de los modelos ML a una escala impresionante. Esto se puede lograr por Biblioteca RAPIDS de NVIDIA cuml (leído como CUDAML). En este artículo, comprenderemos la sintaxis rudimentaria de cuML, su uso y, finalmente, compararemos su consumo de tiempo con sklearn.

IA | cuML
Fuente de la imagen: Creative Commons

cuml

CUML (CUDA ML) es el conjunto de algoritmos de aprendizaje automático acelerado por GPU de código abierto de NVIDIA diseñado para la ciencia de datos, el aprendizaje automático y las tareas analíticas. La mejor parte de cuML es que su sintaxis se ha desarrollado para garantizar que tenga una curva de aprendizaje plana. Aquí están las buenas noticias: si conoce la sintaxis de sklearn, ¡ya dominará cuML!

cuML proporciona una API similar a sklearn, lo que hace que el cambio de Scikit Learn a cuML sea bastante simple para los científicos de datos, los ingenieros de aprendizaje automático y el personal de análisis; en consecuencia, todas las funciones integradas de Scikit Learn están disponibles con el mismo nombre y sintaxis en cuML.

Ejecutar cuML en portátiles Kaggle

Ahora, para ejecutar sus modelos de Machine Learning en GPU usando cuML, necesita tener las GPU específicas de NVIDIA (consulte los requisitos previos esta página). Si no tiene la GPU correcta, no se preocupe, aún puede trabajar con las bibliotecas aceleradas de NVIDIA en Colaboratorio de Google or Cuadernos Kaggle. Para Google Colab, los pasos de instalación son bastante agitados; además, RAPIDS solo admite GPU P4, P100, T4 o V100 en Google Colab; por lo tanto, si no se le asigna una de estas GPU, deberá reiniciar el tiempo de ejecución de la computadora portátil e intentarlo nuevamente. Sin embargo, usar bibliotecas RAPIDS en Kaggle es mucho más fácil; eso es en lo que nos vamos a sumergir.

Para ejecutar Kaggle notebook en GPU, solo siga estos pasos:

Step-1: Ve a www.kaggle.com (Deberá registrarse si es un usuario nuevo) y haga clic en el Crear en la barra de navegación del lado izquierdo. Esto creará un nuevo cuaderno.

Imagen creada por el autor

Step-2: Hacia la parte superior derecha, haga clic en el símbolo de los tres puntos, aparecerá un menú desplegable en la pantalla.

cuml
Imagen creada por el autor

Step-3: Pase el cursor sobre la opción 'Acelerador' por fin, aparecerá otro menú desplegable. Haga clic en GPU.

cuml
Imagen creada por el autor

Step-4: Finalmente, aparecerá un cuadro de diálogo. Kaggle proporciona 30 horas de acceso a la GPU a la semana. Haga clic en 'Activar GPU'.

cuml
Imagen creada por el autor

Ahora, su computadora portátil Kaggle cuenta con el respaldo de la potencia de la GPU y puede usar cuML y todas las demás bibliotecas de RAPIDS en ella.

Comparación entre tiempos computacionales de sklearn y cuML

Comparemos los tiempos computacionales de sklearn con los de cuML. Como ya se dijo, cuML refleja la sintaxis de sklearn, lo que significa que uno no necesita aprender la sintaxis de cuML desde cero; todos los módulos y funciones integrados de sklearn están disponibles inherentemente en cuML.

Ahora, entrenaremos un modelo K-Nearest Neighbor primero usando sklearn y luego usando cuML, calcularemos los tiempos de procesamiento en cada situación y compararemos los dos.

Entrenamiento del modelo KNN usando Sklearn

# KNN Usando sklearn # Importar los módulos necesarios importar el tiempo de sklearn.neighbors importar KNeighborsClassifier importar pandas como pd #cudf es la biblioteca similar a Pandas acelerada por GPU de NVIDIA start = time.time() # Cargando los datos de entrenamiento Data_train = pd.read_csv('. ./input/mnist-digit-recognition-using-knn/train_sample.csv') # Crear matrices de características y objetivos para datos de entrenamiento X_train = Data_train.iloc[:,:-1] Y_train = Data_train.iloc[:,-1 ] # Cargar los datos de prueba Data_test = pd.read_csv('../input/mnist-digit-recognition-using-knn/test_sample.csv') # Crear características y matrices de destino para probar datos X_test = Data_test.iloc[:, :-1] Y_test = Data_test.iloc[:,-1] knn = KNeighborsClassifier(n_neighbors=7) knn.fit(X_train, Y_train) # Predecir en conjunto de datos qué modelo no ha visto antes Y = knn.predict(X_test) end = time.time() CPU_time = end-start print("Tiempo empleado en la CPU = ",CPU_time)

Salida:

Tiempo empleado en la CPU = 8.159586906433105

Entrenamiento de KNN usando cuML

# KNN usando cuml # Importar los módulos necesarios import time from cuml.neighbors import KNeighborsClassifier import cudf #cudf es la biblioteca similar a Pandas acelerada por GPU de NVIDIA start = time.time() # Cargando los datos de entrenamiento Data_train = cudf.read_csv('../ input/mnist-digit-recognition-using-knn/train_sample.csv') # Crear matrices de características y objetivos para datos de entrenamiento X_train = Data_train.iloc[:,:-1] Y_train = Data_train.iloc[:,-1] # Cargando los datos de prueba Data_test = cudf.read_csv('../input/mnist-digit-recognition-using-knn/test_sample.csv') # Crear características y matrices de destino para probar datos X_test = Data_test.iloc[:,:- 1] Y_test = Data_test.iloc[:,-1] knn = KNeighborsClassifier(n_neighbors=7) knn.fit(X_train, Y_train) # Predecir en conjunto de datos qué modelo no ha visto antes Y = knn.predict(X_test) end = time .time() GPU_time = end-start print("Tiempo empleado en GPU = ",GPU_time)

Salida:

Tiempo empleado en la GPU = 0.7302286624908447

Comparación de los tiempos computacionales de Sklearn vs cuML

# Comparación de los tiempos de procesamiento de sklearn y cuml print("Proporción de tiempo de CPU a tiempo de GPU: ",CPU_time/GPU_time)

Salida:

Proporción de tiempo de CPU a tiempo de GPU: 11.174016202815658

Visualizando el Tiempo Computacional en ambos casos

gráfica

Imagen creada por el autor

A partir de los resultados anteriores, podemos ver claramente que nuestro modelo KNN de capacitación cuML proporciona 11 veces más rápido velocidad en comparación con la clásica biblioteca sklearn de Python.

Puede encontrar el Kaggle Notebook para el código anterior esta página y el conjunto de datos utilizado esta página

Conclusión

Está claro a partir de los resultados anteriores que el cuML basado en GPU puede acelerar los procesos de entrenamiento de modelos a gran escala. En la actualidad, donde los tamaños de los conjuntos de datos están creciendo increíblemente, las bibliotecas tradicionales de Python como sklearn tienden a ser lentas debido a las capacidades limitadas de las CPU. Por lo tanto, la aceleración de GPU es un refugio cuando se manejan grandes datos y alimenta los ciclos de vida de la ciencia de datos de manera bastante impresionante; por lo tanto, cerrar la brecha entre los grandes datos y su potencial plausible.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

punto_img

Información más reciente

punto_img