6

Я попытался выполнить следующий пример на DL4J (загрузка файла предварительно подготовленных векторов):DL4J супер медленно на GoogleNews-векторов файл

File gModel = new File("./GoogleNews-vectors-negative300.bin.gz"); 

Word2Vec vec = WordVectorSerializer.loadGoogleModel(gModel, true); 

InputStreamReader r = new InputStreamReader(System.in); 

BufferedReader br = new BufferedReader(r); 

for (; ;) { 
    System.out.print("Word: "); 
    String word = br.readLine(); 

    if ("EXIT".equals(word)) break; 

    Collection<String> lst = vec.wordsNearest(word, 20); 

    System.out.println(word + " -> " + lst); 
} 

Но это супер медленно (с ~ 10 минут, чтобы вычислить ближайшие слова, хотя они и правильны).

Существует достаточно памяти (-Xms20g -Xmx20g).

Когда я запускаю тот же Word2Vec пример из https://code.google.com/p/word2vec/

дает ближайших слова очень быстро.

DL4J использует ND4J, который утверждает, что в два раза быстрее, чем Numpy: http://nd4j.org/benchmarking

Что случилось с моим кодом?

ОБНОВЛЕНИЕ: Он основан на https://github.com/deeplearning4j/dl4j-0.4-examples.git (я не касался каких-либо зависимостей, просто попытался прочитать предварительно подготовленный файл векторов Google). Word2VecRawTextExample работает просто отлично (но размер данных относительно невелик).

ответ

0

В целях повышения эффективности работы, я предлагаю вам сделать следующее: переменной

  1. Набор среды OMP_NUM_THREADS равно числу ваших логических ядер

  2. Установка Intel Math Kernel Library, если вы используете Процессоры Intel

  3. На ваш путь добавьте информацию о том, где mkl_intel_thread.dll из библиотеки Intel Math Kernel живет

 Смежные вопросы

  • Нет связанных вопросов^_^