Spark NLP 3.4.0: новый релиз ML-библиотеки для Apache Spark 3.2.x на Scala 2.12

Apache Spark для дата-аналитиков и сайнтистов примеры курсы обучение, Spark NLP курсы примеры обучение Data Science, обучение Spark курсы, примеры Spark NLP, примеры Spark для разработчиков курсы обучение, обучение большим данным, Школа Больших Данных Учебный Центр Коммерсант

2022 год только начался, а John Snow Labs уже радует разработчиков ML-приложений новым релизом библиотеки Spark NLP. Ключевые фичи 3.4.0 для версии Apache Spark 3.2.x на Scala 2.12: новые GPT-2 трансформеры, аннотаторы для ALBERT, XLNet, RoBERTa, XLM-RoBERTa и Longformer, расширенный хаб готовых Machine Learning моделей и конвейеров, а также исправление ошибок.

Что такое Spark NLP

Напомним, Spark NLP – это современная библиотека обработки естественного языка на основе Apache Spark, которая предоставляет простые, эффективные и точные аннотации NLP для конвейеров машинного обучения, масштабируемых в распределенной среде. Spark NLP поставляется с более чем 4000 предварительно обученными конвейерами и моделями на более чем 200 языках. Библиотека подходит для таких задач, как токенизация, сегментация слов, тегирование частей речи, встраивание слов и предложений, распознавание именованных сущностей, анализ зависимостей, проверка орфографии, классификация текста и токенов, анализ тональности, мультиязычный машинный перевод, обобщение и ответы на вопросы, генерация текста и пр.

Библиотека разработана компанией John Snow Labs на базе Apache Spark и MLLib-модуля этого фреймворка, представлена сообществу под лицензией Apache и имеет открытый исходный код. Она включает множество современных ML-трансформеров (BERT, ALBERT, ELECTRA, XLNet, DistilBERT, RoBERTa, XLM-RoBERTa, Longformer, ELMO, Universal Sentence Encoder, Google T5, MarianMT и GPT2) для Python, R и экосистемы JVM (Java, Scala и Kotlin).

Новый релиз Spark NLP 3.4.0, выпущенный в январе 2022 года, расширяет поддержку основных выпусков Apache Spark 3.2.x на Scala 2.12, о чем мы писали здесь. Также поддерживаются 5 основных выпусков фреймворка и PySpark 2.3.x, 2.4.x, 3.0.x, 3.1.x и 3.2.x одновременно, позволяя переходить с более ранних версий на новые выпуски, включая облачные решения Databricks и EMR в кластерах Spark 3.2.x. Наиболее важные улучшения и дополнения, а также исправления самых значимых ошибок мы рассмотрим далее.

Новые фичи, улучшения и исправления ошибок в релизе 3.4.0

Добавлены следующие возможности:

  • аннотатор GPT2-Transformer для генерации текста с использованием модели OpenAI GPT-2 от HuggingFace, обученной на очень большом массиве общедоступных немаркированных и необработанных англоязычных данных. Это автоматизирует процесс создания входных данных и меток из исходных текстов, позволяя угадывать очередное слово в предложениях.
  • аннотатор RoBertaForSequenceClassification, который может загружать модели RoBERTa для задач многоклассовой классификации документов. Он совместим со всеми моделями, обученными/доработанными с помощью RobertaForSequenceClassification для PyTorch или TFRobertaForSequenceClassification для моделей TensorFlow в HuggingFace.
  • аннотатор XlmRoBertaForSequenceClassification, который может загружать модели XLM-RoBERTa для задач многоклассовой классификации документов. Он совместим со всеми моделями, обученными/доработанными с помощью XLMRobertaForSequenceClassification для PyTorch или TFXLMRobertaForSequenceClassification для моделей TensorFlow в HuggingFace.
  • аннотатор LongformerForSequenceClassification, который может загружать модели ALBERT для задач многоклассовой классификации документов. Он совместим со всеми моделями, обученными/доработанными с помощью LongformerForSequenceClassification для PyTorch или TFLongformerForSequenceClassification для моделей TensorFlow в HuggingFace.
  • аннотатор AlbertForSequenceClassification, который может загружать модели ALBERT для задач многоклассовой классификации документов. Он совместим со всеми моделями, обученными/доработанными с помощью AlbertForSequenceClassification для PyTorch или TFAlbertForSequenceClassification для моделей TensorFlow в HuggingFace.
  • аннотатор XlnetForSequenceClassification, который может загружать модели XLNet для задач многоклассовой классификации документов. Он совместим со всеми моделями, обученными/доработанными с помощью XLNetForSequenceClassification для PyTorch или TFXLNetForSequenceClassification для моделей TensorFlow в HuggingFace.
  • обучаемые и распространяемые аннотаторы Word2Vec на основе Word2Vec в Spark ML., что позволяет обучить Word2Vec в кластере на нескольких компьютерах для обработки крупномасштабных наборов данных и использовать обученную модель для классификаций на уровне токенов, таких как NerDL.
  • параметр useBestModel в аннотаторе NerDLApproach, который сохраняет и восстанавливает модель, достигшую наилучшей производительности в конце обучения. В приоритете метрики из testDataset (микро F1), метрики из validationSplit (микро F1). Если ничего не задано, параметр будет отслеживать потери во время обучения.
  • поддержка Apache Spark и PySpark 3.2.x на Scala 2.12. Spark NLP по умолчанию поставляется для Spark 3.0.x/3.1.x, но теперь есть пакеты spark-nlp-spark32 и spark-nlp-gpu-spark32;
  • новый параметр в функцию start() в Python для Apache Spark 3.2.x (spark32=True);
  • обновлены скрипты Colab и Kaggle для более быстрой настройки и работы на Java 11;
  • новые скрипты и записные книжки для создания пользовательских графов TensroFlow для аннотатора ContextSpellCheckerApproach;
  • новый параметр graphFolder в аннотаторе ContextSpellCheckerApproach, который позволяет обучать ContextSpellChecker из пользовательского графа TensorFlow;
  • поддержка файловой системы DBFS в параметре graphFolder – теперь, запустив Spark NLP 3.4.0, можно указать NerDLApproach или ContextSpellCheckerApproach на граф TensorFlow в Databricks;
  • новая фича всех классификаторов ForTokenClassification и ForSequenceClassification для извлечения классов из предварительно обученных моделей;
  • параметр inputFormats в аннотаторы DateMatcher и MultiDateMatcher – теперь они могут определять список допустимых форматов ввода с помощью шаблонов даты для поиска в тексте.
  • пакетная обработка в аннотаторах T5Transformer и MarianTransformer;
  • схема readDataset в классе CoNLL();
  • 6 новых сред выполнения Databricks и 3 новых серии EMR 6.x: EMR 5.33.1 (Apache Spark 2.4.7/Hadoop 2.10.1) EMR 6.3.1 (Apache Spark 3.1.1/Hadoop 3.2.1) EMR 6.4.0 (Apache Spark 3.1.2/Hadoop 3.2.1).

Также в Spark NLP 3.4.0 исправлены следующие ошибки:

  • состояние гонки в кластерном режиме, когда доступ к сеансу TF вызывается столько раз, сколько доступно ядер на машине с драйвером в первый раз. Загрузка модели несколько раз одновременно приводит к увеличению использования диска, а ввод-вывод может стать узким местом для больших моделей, особенно на машине с более медленными дисками.
  • проблема с производительностью, появившаяся в выпуске 3.3.3 для аннотаторов T5Transformer и MarianTransformer;
  • ошибка в разрешении модели без фильтрации по метке времени;
  • некорректный тип параметра configProtoBytes в Python;
  • отсутствие DefaultParamsReadable в аннотаторе RegexTokenizer;
  • отсутствие моделей lemma_antbnc,entiment_viveknиspellcheck_norvig и конвейеров clean_slang, check_spelling, match_chunks и match_datetime для 3-ей версии фреймворка;
  • saveModel в TrainingHelper;
  • некорректные имена модулей Keyword/Yake в Scala;

Также расширен хаб готовых NLP-моделей и конвейеров обработки естественного языка. Узнайте больше про применение Apache Spark для разработки распределенных ML-приложений и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://github.com/JohnSnowLabs/spark-nlp
  2. https://medium.com/spark-nlp/spark-nlp-3-4-0-new-openai-gpt2-new-transformers-and-lots-more-f3056b6b41c5
Поиск по сайту