Изменения

Перейти к: навигация, поиск

Многопоточность в машинном обучении

76 байт добавлено, 10:36, 8 января 2021
prim
Следует выделить следующие виды параллелизма:
* Параллелизм на уровне инструкций (<ref>[https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D0%B8%D0%B7%D0%BC_%D0%BD%D0%B0_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4 ILP]</ref>): несколько инструкций исполняются одновременно.* Параллелизм типа одна инструкция множество данных (<ref>[https://ru.wikipedia.org/wiki/SIMD SIMD]</ref>): одна операция применяется к множеству данных
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (<ref>[https://spark.apache.org/mllib/ MLlib] </ref> на Spark, <ref>[https://mahout.apache.org/ Mahout] </ref> на Hadoop)
== Идеи используемые для ускорения вычислений в ML ==
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:
* <ref>[https://developer.nvidia.com/cuda-toolkit CUDA] </ref> — язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре* <ref>[https://developer.nvidia.com/cublas cuBLAS] </ref> — библиотека представляет собой реализацию BLAS (базовых подпрограмм линейной алгебры) поверх среды выполнения CUDA.* <ref>[https://www.khronos.org/opencl/ OpenCL] </ref>— фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах, а также FPGA
Пример перемножения матриц на cuBLAS
118
правок

Навигация