Ответ 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 с разной степенью зрелости и поддержки:
- https://github.com/whatupbiatch/cuda-word2vec [memory mgmt выглядит великолепно, хотя несуществующая документация о том, как создавать наборы данных]
- https://github.com/fengChenHPC/word2vec_cbow [сверхбыстрые, но проблемы с памятью GPU на больших наборах данных]
Я считаю, что команда SparkML недавно получила прототип реализации Word2Vec на основе cuBLAS. Вы можете изучить это.