¿Es scikit-learn adecuado para tareas de big data?

Estoy trabajando en una tarea TREC que involucra el uso de técnicas de aprendizaje automático, donde el conjunto de datos consta de más de 5 terabytes de documentos web, de los cuales se planea extraer vectores de bolsa de palabras. scikit-learn tiene un buen conjunto de funcionalidades que parece ajustarse a mi necesidad, pero no sé si se escalará bien para manejar grandes datos. Por ejemplo, ¿es capaz HashingVectorizer de manejar 5 terabytes de documentos, y es posible paralelizarlo? Además, ¿cuáles son algunas alternativas para las tareas de aprendizaje automático a gran escala?

HashingVectorizer funcionará si, de manera iterativa, descompone sus datos en lotes de documentos de 10k o 100k que caben en la memoria, por ejemplo.

Luego, puede pasar el lote de documentos transformados a un clasificador lineal que admita el método partial_fit (por ejemplo, SGDClassifier o PassiveAggressiveClassifier ) y luego iterar en nuevos lotes.

Puede comenzar a calificar el modelo en un conjunto de validación retenido (por ejemplo, documentos de 10k) a medida que avanza para monitorear la precisión del modelo parcialmente entrenado sin esperar a ver todas las muestras.

También puede hacer esto en paralelo en varias máquinas en particiones de los datos y luego promediar los atributos coef_ e intercept_ resultantes para obtener un modelo lineal final para todo el conjunto de datos.

Discuto esto en esta charla que di en marzo de 2013 en PyData: http://vimeo.com/63269736

También hay un código de ejemplo en este tutorial sobre cómo paralizar scikit-learn con IPython.parallel tomado de: https://github.com/ogrisel/parallel_ml_tutorial