Подтвердить что ты не робот

Как тренировать Word2vec на очень больших наборах данных?

Я подумываю о подготовке word2vec по огромным крупномасштабным данным размером более 10 ТБ + по размеру на свалке веб-сканера.

Я лично тренировался с внедрением. Дамп GoogleNews-2012 (1.5gb) на моем iMac занял около 3 часов, чтобы тренировать и генерировать векторы (впечатленные скоростью). Я не пытался реализовать реализацию python, хотя:( Я где-то читал, что генерирующие векторы на wiki-dump (11gb) из 300 векторных длин занимают около 9 дней для генерации.

  • Как ускорить word2vec? Нужно ли мне использовать распределенные модели или какое оборудование мне нужно делать в течение 2-3 дней? У меня iMac с RAM 8gb.

  • Какой из них быстрее? Gensim python или реализация C?

Я вижу, что реализация word2vec не поддерживает обучение GPU.

4b9b3361

Ответ 1

Существует множество возможностей для создания моделей Word2Vec в масштабе. Как вы указали, решения для кандидатов распределяются (и/или многопоточные) или графические процессоры. Это не исчерпывающий список, но, надеюсь, вы получите некоторые идеи относительно того, как действовать.

Распределенные/многопоточные параметры:

  • Gensim использует Cython, где он имеет значение, и равен или не соответствует гораздо медленнее, чем реализация C. Многопоточные работы Gensim хорошо, и используя машину с достаточной памятью и большое количество сердечники значительно уменьшают время генерации вектора. Вы можете захотеть исследовать с использованием экземпляров Amazon EC2 16 или 32-core.
  • Deepdist может использовать gensim и Spark для распределения рабочих нагрузок gensim через кластер. У Deepdist также есть некоторые умные SGD оптимизация, которые синхронизируют градиент между узлами. Если вы используете многоядерные машины в качестве узлов, вы можете воспользоваться преимуществами как кластеризации и многопоточности.

Существует несколько реализаций GPU Word2Vec. Учитывая большой размер набора данных и ограниченную память GPU, вам может потребоваться стратегия кластеризации.

  • Bidmach, по-видимому, очень быстрый (документации, однако, не хватает, и, по общему признанию, я изо всех сил пытался заставить ее работать).
  • DL4J имеет реализацию Word2Vec, но команде еще предстоит внедрить gemm cuBLAS, и это относительно медленное сравнение с процессорами.
  • Keras - это основа глубокого обучения Python, использующая Theano. Хотя он не реализует word2vec как таковой, он реализует слой внедрения и может использоваться для создания и запроса векторов слов.

Существует ряд других реализаций CUDA в Word2Vec с разной степенью зрелости и поддержки:

Я считаю, что команда SparkML недавно получила прототип реализации Word2Vec на основе cuBLAS. Вы можете изучить это.