<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AccountAll</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AccountAll"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/AccountAll"/>
		<updated>2026-06-11T13:55:33Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73991</id>
		<title>Многопоточность в машинном обучении</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73991"/>
				<updated>2020-04-22T18:07:01Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: Добавил пример для OpenCL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Следует выделить следующие виды параллелизма:&lt;br /&gt;
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций одновременно.&lt;br /&gt;
* Параллелизм одна инструкция множество данных(SIMD): одна инструкция работает с вектором чисел&lt;br /&gt;
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.&lt;br /&gt;
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)&lt;br /&gt;
&lt;br /&gt;
== Идеи используемые для ускорения вычислений в ML ==&lt;br /&gt;
=== Параллелизм для ускорения линейной алгебры. ===&lt;br /&gt;
Мы можем значительно повысить производительность, создав ядра линейной алгебры (например, умножение матриц, векторное сложение и т.д.), которые используют параллелизм для ускорения работы. Поскольку умножение матриц занимает большую часть времени обучения нейронных сетей, это может привести к значительному сквозному ускорению обучающего конвейера. В основе этого лежит параллелизм ILP, SIMD а для больших матриц также может использоваться многопоточность.&lt;br /&gt;
&lt;br /&gt;
Примеры оптимизаций:&lt;br /&gt;
* Высоко оптимизированные тензорные библиотеки для арифметики.&lt;br /&gt;
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.&lt;br /&gt;
* Broadcast операции, а не циклы.&lt;br /&gt;
* Распараллеленные реализации некоторых специальных операций (таких как свертки для [[Сверточные нейронные сети | CNN]]).&lt;br /&gt;
&lt;br /&gt;
==== Параллелизм broadcast операций ====&lt;br /&gt;
Просмотрите код наивной реализации поэлементное произведение двух векторов на Python&lt;br /&gt;
&lt;br /&gt;
  def elementwise_product(x, y):&lt;br /&gt;
      assert(len(x) == len(y))&lt;br /&gt;
      z = numpy.zeros(len(x))&lt;br /&gt;
      for i in range(len(x)):&lt;br /&gt;
          z[i] = x[i] * y[i]&lt;br /&gt;
      return z&lt;br /&gt;
&lt;br /&gt;
Такой код лучше заменять на broadcast операции из numpy, которые выигрывают от векторизации и ILP. Также такой код может быть легко распараллелен для больших векторов&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм в оптимизации гиперпараметров ===&lt;br /&gt;
Для параллельной [[Настройка гиперпараметров | оптимизации гиперпараметров]] можно использовать поиск по решётке или случайный поиск в которых мы можем оценить параметры независимо.&lt;br /&gt;
Такая оптимизации часто встречаются в библиотеках машинного обучения.&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм [[Кросс-валидация | кросс-валидации]] ===&lt;br /&gt;
Полная кросс-валидация, k-fold, t×k-fold, Leave-One-Out легко распараллеливаются на несколько потоков, каждый из которых работает на своем разбиении данных&lt;br /&gt;
&lt;br /&gt;
[[Файл:ParallelCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм GPU ===&lt;br /&gt;
Типичное число потоков обработки графического процессора - десятки тысяч, что позволяет вычислять одну и ту же операцию параллельно на множестве элементов.&lt;br /&gt;
&lt;br /&gt;
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:&lt;br /&gt;
* [https://developer.nvidia.com/cuda-toolkit CUDA] - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре&lt;br /&gt;
* [https://developer.nvidia.com/cublas cuBLAS] - библиотека представляет собой реализацию BLAS (базовых подпрограмм линейной алгебры) поверх среды выполнения CUDA.&lt;br /&gt;
* [https://www.khronos.org/opencl/ OpenCL] - фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах, а также FPGA&lt;br /&gt;
&lt;br /&gt;
Пример перемножения матриц на cuBLAS&lt;br /&gt;
  void gpu_blas_mmul(cublasHandle_t &amp;amp;handle, const float *A, const float *B, float *C, const int m, const int k, const int n) {&lt;br /&gt;
      int lda = m, ldb = k, ldc = m;&lt;br /&gt;
      const float alf = 1;&lt;br /&gt;
      const float bet = 0;&lt;br /&gt;
      const float *alpha = &amp;amp;alf;&lt;br /&gt;
      const float *beta = &amp;amp;bet;&lt;br /&gt;
      // Do the actual multiplication&lt;br /&gt;
      cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Пример перемножения матриц на PyCUDA&lt;br /&gt;
  import pycuda.gpuarray as gpuarray&lt;br /&gt;
  import numpy as np&lt;br /&gt;
  import skcuda.linalg as linalg&lt;br /&gt;
  # --- Initializations&lt;br /&gt;
  import pycuda.autoinit&lt;br /&gt;
  linalg.init()&lt;br /&gt;
   &lt;br /&gt;
  A = np.array(([1, 2, 3], [4, 5, 6])).astype(np.float64)&lt;br /&gt;
  B = np.array(([7, 8, 1, 5], [9, 10, 0, 9], [11, 12, 5, 5])).astype(np.float64)&lt;br /&gt;
   &lt;br /&gt;
  A_gpu = gpuarray.to_gpu(A)&lt;br /&gt;
  B_gpu = gpuarray.to_gpu(B)&lt;br /&gt;
   &lt;br /&gt;
  C_gpu = linalg.dot(A_gpu, B_gpu)&lt;br /&gt;
   &lt;br /&gt;
  print(np.dot(A, B))&lt;br /&gt;
  print(C_gpu)&lt;br /&gt;
&lt;br /&gt;
Наивная реализация перемножения матриц на OpenCL&lt;br /&gt;
  // First naive implementation&lt;br /&gt;
  __kernel void myGEMM1(const int M, const int N, const int K,&lt;br /&gt;
                        const __global float *A,&lt;br /&gt;
                        const __global float *B,&lt;br /&gt;
                        __global float *C) {&lt;br /&gt;
       &lt;br /&gt;
      // Thread identifiers&lt;br /&gt;
      const int globalRow = get_global_id(0); // Row ID of C (0..M)&lt;br /&gt;
      const int globalCol = get_global_id(1); // Col ID of C (0..N)&lt;br /&gt;
       &lt;br /&gt;
      // Compute a single element (loop over K)&lt;br /&gt;
      float acc = 0.0f;&lt;br /&gt;
      for (int k = 0; k &amp;lt; K; k++) {&lt;br /&gt;
          acc += A[k * M + globalRow] * B[globalCol * K + k];&lt;br /&gt;
      }&lt;br /&gt;
       &lt;br /&gt;
      // Store the result&lt;br /&gt;
      C[globalCol * M + globalRow] = acc;&lt;br /&gt;
  }&lt;br /&gt;
=== Параллелизм SGD ===&lt;br /&gt;
Запускаем внешний цикл [[Стохастический градиентный спуск|SGD]] параллельно в пуле потоков и используем конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно из-за накладных расходов на синхронизацию. &lt;br /&gt;
&lt;br /&gt;
Еще более интересная идея (называемая асинхронным SGD или Hogwild): Несколько потоков запускают SGD параллельно без какой-либо синхронизации. Теперь условия гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, уже присутствующей в алгоритм из-за случайной выборки градиента.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]&lt;br /&gt;
# [https://docs.nvidia.com/cuda/pdf/CUBLAS_Library.pdf cuBLAS library user guide]&lt;br /&gt;
# [https://solarianprogrammer.com/2012/05/31/matrix-multiplication-cuda-cublas-curand-thrust/ Matrix multiplication on GPU using CUDA with CUBLAS]&lt;br /&gt;
# [https://medium.com/@CIulius/a-short-notice-on-performing-matrix-multiplications-in-pycuda-cbfb00cf1450 A short notice on performing matrix multiplications in PyCUDA]&lt;br /&gt;
# [https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html CUDA C++ Programming Guide]&lt;br /&gt;
# [https://cnugteren.github.io/tutorial/pages/page1.html OpenCL SGEMM tuning for Kepler]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73990</id>
		<title>Многопоточность в машинном обучении</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73990"/>
				<updated>2020-04-22T17:49:30Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: Добавил больше примеров для GPU&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Следует выделить следующие виды параллелизма:&lt;br /&gt;
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций одновременно.&lt;br /&gt;
* Параллелизм одна инструкция множество данных(SIMD): одна инструкция работает с вектором чисел&lt;br /&gt;
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.&lt;br /&gt;
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)&lt;br /&gt;
&lt;br /&gt;
== Идеи используемые для ускорения вычислений в ML ==&lt;br /&gt;
=== Параллелизм для ускорения линейной алгебры. ===&lt;br /&gt;
Мы можем значительно повысить производительность, создав ядра линейной алгебры (например, умножение матриц, векторное сложение и т.д.), которые используют параллелизм для ускорения работы. Поскольку умножение матриц занимает большую часть времени обучения нейронных сетей, это может привести к значительному сквозному ускорению обучающего конвейера. В основе этого лежит параллелизм ILP, SIMD а для больших матриц также может использоваться многопоточность.&lt;br /&gt;
&lt;br /&gt;
Примеры оптимизаций:&lt;br /&gt;
* Высоко оптимизированные тензорные библиотеки для арифметики.&lt;br /&gt;
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.&lt;br /&gt;
* Broadcast операции, а не циклы.&lt;br /&gt;
* Распараллеленные реализации некоторых специальных операций (таких как свертки для [[Сверточные нейронные сети | CNN]]).&lt;br /&gt;
&lt;br /&gt;
==== Параллелизм broadcast операций ====&lt;br /&gt;
Просмотрите код наивной реализации поэлементное произведение двух векторов на Python&lt;br /&gt;
&lt;br /&gt;
  def elementwise_product(x, y):&lt;br /&gt;
      assert(len(x) == len(y))&lt;br /&gt;
      z = numpy.zeros(len(x))&lt;br /&gt;
      for i in range(len(x)):&lt;br /&gt;
          z[i] = x[i] * y[i]&lt;br /&gt;
      return z&lt;br /&gt;
&lt;br /&gt;
Такой код лучше заменять на broadcast операции из numpy, которые выигрывают от векторизации и ILP. Также такой код может быть легко распараллелен для больших векторов&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм в оптимизации гиперпараметров ===&lt;br /&gt;
Для параллельной [[Настройка гиперпараметров | оптимизации гиперпараметров]] можно использовать поиск по решётке или случайный поиск в которых мы можем оценить параметры независимо.&lt;br /&gt;
Такая оптимизации часто встречаются в библиотеках машинного обучения.&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм [[Кросс-валидация | кросс-валидации]] ===&lt;br /&gt;
Полная кросс-валидация, k-fold, t×k-fold, Leave-One-Out легко распараллеливаются на несколько потоков, каждый из которых работает на своем разбиении данных&lt;br /&gt;
&lt;br /&gt;
[[Файл:ParallelCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм GPU ===&lt;br /&gt;
Типичное число потоков обработки графического процессора - десятки тысяч, что позволяет вычислять одну и ту же операцию параллельно на множестве элементов.&lt;br /&gt;
&lt;br /&gt;
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:&lt;br /&gt;
* [https://developer.nvidia.com/cuda-toolkit CUDA] - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре&lt;br /&gt;
* [https://developer.nvidia.com/cublas cuBLAS] - библиотека представляет собой реализацию BLAS (базовых подпрограмм линейной алгебры) поверх среды выполнения CUDA.&lt;br /&gt;
* [https://www.khronos.org/opencl/ OpenCL] - фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах, а также FPGA&lt;br /&gt;
&lt;br /&gt;
Пример перемножения матриц на cuBLAS&lt;br /&gt;
  void gpu_blas_mmul(cublasHandle_t &amp;amp;handle, const float *A, const float *B, float *C, const int m, const int k, const int n) {&lt;br /&gt;
      int lda = m, ldb = k, ldc = m;&lt;br /&gt;
      const float alf = 1;&lt;br /&gt;
      const float bet = 0;&lt;br /&gt;
      const float *alpha = &amp;amp;alf;&lt;br /&gt;
      const float *beta = &amp;amp;bet;&lt;br /&gt;
      // Do the actual multiplication&lt;br /&gt;
      cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Пример перемножения матриц на PyCUDA&lt;br /&gt;
  import pycuda.gpuarray as gpuarray&lt;br /&gt;
  import numpy as np&lt;br /&gt;
  import skcuda.linalg as linalg&lt;br /&gt;
  # --- Initializations&lt;br /&gt;
  import pycuda.autoinit&lt;br /&gt;
  linalg.init()&lt;br /&gt;
   &lt;br /&gt;
  A = np.array(([1, 2, 3], [4, 5, 6])).astype(np.float64)&lt;br /&gt;
  B = np.array(([7, 8, 1, 5], [9, 10, 0, 9], [11, 12, 5, 5])).astype(np.float64)&lt;br /&gt;
   &lt;br /&gt;
  A_gpu = gpuarray.to_gpu(A)&lt;br /&gt;
  B_gpu = gpuarray.to_gpu(B)&lt;br /&gt;
   &lt;br /&gt;
  C_gpu = linalg.dot(A_gpu, B_gpu)&lt;br /&gt;
   &lt;br /&gt;
  print(np.dot(A, B))&lt;br /&gt;
  print(C_gpu)&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм SGD ===&lt;br /&gt;
Запускаем внешний цикл [[Стохастический градиентный спуск|SGD]] параллельно в пуле потоков и используем конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно из-за накладных расходов на синхронизацию. &lt;br /&gt;
&lt;br /&gt;
Еще более интересная идея (называемая асинхронным SGD или Hogwild): Несколько потоков запускают SGD параллельно без какой-либо синхронизации. Теперь условия гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, уже присутствующей в алгоритм из-за случайной выборки градиента.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]&lt;br /&gt;
# [https://docs.nvidia.com/cuda/pdf/CUBLAS_Library.pdf cuBLAS library user guide]&lt;br /&gt;
# [https://solarianprogrammer.com/2012/05/31/matrix-multiplication-cuda-cublas-curand-thrust/ Matrix multiplication on GPU using CUDA with CUBLAS]&lt;br /&gt;
# [https://medium.com/@CIulius/a-short-notice-on-performing-matrix-multiplications-in-pycuda-cbfb00cf1450 A short notice on performing matrix multiplications in PyCUDA]&lt;br /&gt;
# [https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html CUDA C++ Programming Guide]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73979</id>
		<title>Многопоточность в машинном обучении</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73979"/>
				<updated>2020-04-22T14:28:28Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: /* Параллелизм GPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Следует выделить следующие виды параллелизма:&lt;br /&gt;
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций одновременно.&lt;br /&gt;
* Параллелизм одна инструкция множество данных(SIMD): одна инструкция работает с вектором чисел&lt;br /&gt;
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.&lt;br /&gt;
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)&lt;br /&gt;
&lt;br /&gt;
== Идеи используемые для ускорения вычислений в ML ==&lt;br /&gt;
=== Параллелизм для ускорения линейной алгебры. ===&lt;br /&gt;
Мы можем значительно повысить производительность, создав ядра линейной алгебры (например, умножение матриц, векторное сложение и т.д.), которые используют параллелизм для ускорения работы. Поскольку умножение матриц занимает большую часть времени обучения нейронных сетей, это может привести к значительному сквозному ускорению обучающего конвейера. В основе этого лежит параллелизм ILP, SIMD а для больших матриц также может использоваться многопоточность.&lt;br /&gt;
&lt;br /&gt;
Примеры оптимизаций:&lt;br /&gt;
* Высоко оптимизированные тензорные библиотеки для арифметики.&lt;br /&gt;
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.&lt;br /&gt;
* Broadcast операции, а не циклы.&lt;br /&gt;
* Распараллеленные реализации некоторых специальных операций (таких как свертки для [[Сверточные нейронные сети | CNN]]).&lt;br /&gt;
&lt;br /&gt;
==== Параллелизм broadcast операций ====&lt;br /&gt;
Просмотрите код наивной реализации поэлементное произведение двух векторов на Python&lt;br /&gt;
&lt;br /&gt;
  def elementwise_product(x, y):&lt;br /&gt;
      assert(len(x) == len(y))&lt;br /&gt;
      z = numpy.zeros(len(x))&lt;br /&gt;
      for i in range(len(x)):&lt;br /&gt;
          z[i] = x[i] * y[i]&lt;br /&gt;
      return z&lt;br /&gt;
&lt;br /&gt;
Такой код лучше заменять на broadcast операции из numpy, которые выигрывают от векторизации и ILP. Также такой код может быть легко распараллелен для больших векторов&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм в оптимизации гиперпараметров ===&lt;br /&gt;
Для параллельной [[Настройка гиперпараметров | оптимизации гиперпараметров]] можно использовать поиск по решётке или случайный поиск в которых мы можем оценить параметры независимо.&lt;br /&gt;
Такая оптимизации часто встречаются в библиотеках машинного обучения.&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм [[Кросс-валидация | кросс-валидации]] ===&lt;br /&gt;
Полная кросс-валидация, k-fold, t×k-fold, Leave-One-Out легко распараллеливаются на несколько потоков, каждый из которых работает на своем разбиении данных&lt;br /&gt;
&lt;br /&gt;
[[Файл:ParallelCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм GPU ===&lt;br /&gt;
Типичное число потоков обработки графического процессора - десятки тысяч, что позволяет вычислять одну и ту же операцию параллельно на множестве элементов.&lt;br /&gt;
&lt;br /&gt;
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:&lt;br /&gt;
* [https://developer.nvidia.com/cublas cuBLAS] - библиотека от Nvidia позволяющая эффективно перемножать матрицы.&lt;br /&gt;
* [https://developer.nvidia.com/cuda-toolkit CUDA] - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре&lt;br /&gt;
* [https://www.khronos.org/opencl/ OpenCL] - фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах, а также FPGA&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм SGD ===&lt;br /&gt;
Запускаем внешний цикл [[Стохастический градиентный спуск|SGD]] параллельно в пуле потоков и используем конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно из-за накладных расходов на синхронизацию. &lt;br /&gt;
&lt;br /&gt;
Еще более интересная идея (называемая асинхронным SGD или Hogwild): Несколько потоков запускают SGD параллельно без какой-либо синхронизации. Теперь условия гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, уже присутствующей в алгоритм из-за случайной выборки градиента.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73855</id>
		<title>Многопоточность в машинном обучении</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73855"/>
				<updated>2020-04-20T11:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Следует выделить следующие виды параллелизма:&lt;br /&gt;
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций одновременно.&lt;br /&gt;
* Параллелизм одна инструкция множество данных(SIMD): одна инструкция работает с вектором чисел&lt;br /&gt;
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.&lt;br /&gt;
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)&lt;br /&gt;
&lt;br /&gt;
== Идеи используемые для ускорения вычислений в ML ==&lt;br /&gt;
=== Параллелизм для ускорения линейной алгебры. ===&lt;br /&gt;
Мы можем значительно повысить производительность, создав ядра линейной алгебры (например, умножение матриц, векторное сложение и т.д.), которые используют параллелизм для ускорения работы. Поскольку умножение матриц занимает большую часть времени обучения нейронных сетей, это может привести к значительному сквозному ускорению обучающего конвейера. В основе этого лежит параллелизм ILP, SIMD а для больших матриц также может использоваться многопоточность.&lt;br /&gt;
&lt;br /&gt;
Примеры оптимизаций:&lt;br /&gt;
* Высоко оптимизированные тензорные библиотеки для арифметики.&lt;br /&gt;
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.&lt;br /&gt;
* Broadcast операции, а не циклы.&lt;br /&gt;
* Распараллеленные реализации некоторых специальных операций (таких как свертки для [[Сверточные нейронные сети | CNN]]).&lt;br /&gt;
&lt;br /&gt;
==== Параллелизм broadcast операций ====&lt;br /&gt;
Просмотрите код наивной реализации поэлементное произведение двух векторов на Python&lt;br /&gt;
&lt;br /&gt;
  def elementwise_product(x, y):&lt;br /&gt;
      assert(len(x) == len(y))&lt;br /&gt;
      z = numpy.zeros(len(x))&lt;br /&gt;
      for i in range(len(x)):&lt;br /&gt;
          z[i] = x[i] * y[i]&lt;br /&gt;
      return z&lt;br /&gt;
&lt;br /&gt;
Такой код лучше заменять на broadcast операции из numpy, которые выигрывают от векторизации и ILP. Также такой код может быть легко распараллелен для больших векторов&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм в оптимизации гиперпараметров ===&lt;br /&gt;
Для параллельной [[Настройка гиперпараметров | оптимизации гиперпараметров]] можно использовать поиск по решётке или случайный поиск в которых мы можем оценить параметры независимо.&lt;br /&gt;
Такая оптимизации часто встречаются в библиотеках машинного обучения.&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм [[Кросс-валидация | кросс-валидации]] ===&lt;br /&gt;
Полная кросс-валидация, k-fold, t×k-fold, Leave-One-Out легко распараллеливаются на несколько потоков, каждый из которых работает на своем разбиении данных&lt;br /&gt;
&lt;br /&gt;
[[Файл:ParallelCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм GPU ===&lt;br /&gt;
Типичное число потоков обработки графического процессора - десятки тысяч, что позволяет вычислять одну и ту же операцию параллельно на множестве элементов.&lt;br /&gt;
&lt;br /&gt;
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей:&lt;br /&gt;
* cuBLAS - библиотека от Nvidia позволяющая эффективно перемножать матрицы.&lt;br /&gt;
* CUDA - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм SGD ===&lt;br /&gt;
Запускаем внешний цикл [[Стохастический градиентный спуск|SGD]] параллельно в пуле потоков и используем конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно из-за накладных расходов на синхронизацию. &lt;br /&gt;
&lt;br /&gt;
Еще более интересная идея (называемая асинхронным SGD или Hogwild): Несколько потоков запускают SGD параллельно без какой-либо синхронизации. Теперь условия гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, уже присутствующей в алгоритм из-за случайной выборки градиента.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ParallelCrossValidation.png&amp;diff=73850</id>
		<title>Файл:ParallelCrossValidation.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ParallelCrossValidation.png&amp;diff=73850"/>
				<updated>2020-04-20T11:04:18Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73849</id>
		<title>Многопоточность в машинном обучении</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%BC_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8&amp;diff=73849"/>
				<updated>2020-04-20T11:01:22Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: Статья, первый вид&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Следует выделить следующие виды параллелизма:&lt;br /&gt;
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций одновременно.&lt;br /&gt;
* Параллелизм одна инструкция множество данных(SIMD): одна инструкция работает с вектором чисел&lt;br /&gt;
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.&lt;br /&gt;
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)&lt;br /&gt;
&lt;br /&gt;
== Идеи используемые для ускорения вычислений в ML ==&lt;br /&gt;
=== Параллелизм для ускорения линейной алгебры. ===&lt;br /&gt;
Мы можем значительно повысить производительность, создав ядра линейной алгебры (например, умножение матриц, векторное сложение и т.д.), которые используют параллелизм для ускорения работы. Поскольку умножение матриц занимает большую часть обучения нейронных сетей, это может привести к значительному сквозному ускорению обучающего конвейера. В основе этого лежит параллелизм ILP, SIMD а для больших матриц также может использоваться многопоточность.&lt;br /&gt;
&lt;br /&gt;
Примеры оптимизаций:&lt;br /&gt;
* Высоко оптимизированные тензорные библиотеки для арифметики.&lt;br /&gt;
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.&lt;br /&gt;
* Broadcast операции, а не циклы.&lt;br /&gt;
* Распараллеленные реализации некоторых специальных операций (таких как свертки для CNN).&lt;br /&gt;
&lt;br /&gt;
==== Параллелизм broadcast операций ====&lt;br /&gt;
Просмотрите код наивной реализации поэлементное произведение двух векторов на Python&lt;br /&gt;
&lt;br /&gt;
  def elementwise_product(x, y):&lt;br /&gt;
      assert(len(x) == len(y))&lt;br /&gt;
      z = numpy.zeros(len(x))&lt;br /&gt;
      for i in range(len(x)):&lt;br /&gt;
          z[i] = x[i] * y[i]&lt;br /&gt;
      return z&lt;br /&gt;
&lt;br /&gt;
Такой код лучше заменять на broadcast операции из numpy, которые выигрывают от векторизации и ILP. Также такой код может быть легко распараллелен для больших векторов&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм в оптимизации гиперпараметров ===&lt;br /&gt;
Для параллельной оптимизации геперпараметров можно использовать поиск по решётке или случайный поиск в которых мы можем оценить параметры независимо.&lt;br /&gt;
Такая оптимизации часто встречаются в библиотеках машинного обучения.&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм кросс-валидации ===&lt;br /&gt;
Полная кросс-валидация, k-fold, t×k-fold, Leave-One-Out легко распараллеливаются на несколько потоков, каждый из которых работает на своем разбиении данных&lt;br /&gt;
&lt;br /&gt;
[[Файл:ParallelCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм GPU ===&lt;br /&gt;
Типичное число потоков обработки графического процессора - десятки тысяч, что позволяет вычислять одну и ту же операцию параллельно на множестве элементов.&lt;br /&gt;
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей:&lt;br /&gt;
cuBLAS - библиотека от Nvidia позволяющая эффективно перемножать матрицы.&lt;br /&gt;
CUDA - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре&lt;br /&gt;
&lt;br /&gt;
=== Параллелизм SGD ===&lt;br /&gt;
Запускаем внешний цикл SGD параллельно в пуле потоков и используем конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно из-за накладных расходов на синхронизацию. &lt;br /&gt;
Еще более интересная идея (называемая асинхронным SGD или Hogwild): Несколько потоков запускают SGD параллельно без какой-либо синхронизации. Теперь условия гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, уже присутствующей в алгоритм из-за случайной выборки градиента.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=73841</id>
		<title>Машинное обучение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=73841"/>
				<updated>2020-04-20T09:50:09Z</updated>
		
		<summary type="html">&lt;p&gt;AccountAll: /* В разработке */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Машинное обучение]]&lt;br /&gt;
&lt;br /&gt;
=Общие понятия=&lt;br /&gt;
*[[Общие понятия]]&lt;br /&gt;
*[[Переобучение]]&lt;br /&gt;
*[[Кросс-валидация]]&lt;br /&gt;
*[[Стохастический градиентный спуск]]&lt;br /&gt;
*[[Регуляризация]]&lt;br /&gt;
*[[Ранжирование]]&lt;br /&gt;
*[[Обучение с частичным привлечением учителя]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Жизненный цикл модели машинного обучения]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Классификация и регрессия=&lt;br /&gt;
*[[Метрический классификатор и метод ближайших соседей]]&lt;br /&gt;
*[[Дерево решений и случайный лес]]&lt;br /&gt;
*[[Вариации регрессии]]&lt;br /&gt;
*[[Линейная регрессия]]&lt;br /&gt;
*[[Логистическая регрессия]]&lt;br /&gt;
*[[Метод опорных векторов (SVM)]]&lt;br /&gt;
*[[Ядра]]&lt;br /&gt;
*[[Оценка качества в задачах классификации и регрессии]]&lt;br /&gt;
*[[Байесовская классификация]]&lt;br /&gt;
*[[Байесовские сети]]&lt;br /&gt;
*[[Поиск ближайших соседей с помощью иерархического маленького мира]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Кластеризация=&lt;br /&gt;
*[[Кластеризация]]&lt;br /&gt;
*[[EM-алгоритм]]&lt;br /&gt;
*[[Иерархическая кластеризация]]&lt;br /&gt;
*[[Оценка качества в задаче кластеризации]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Эволюционные алгоритмы кластеризации]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ансамбли=&lt;br /&gt;
*[[Виды ансамблей]]&lt;br /&gt;
*[[Бустинг, AdaBoost]]&lt;br /&gt;
*[[XGBoost]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[CatBoost]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
*[[Нейронные сети, перцептрон]]&lt;br /&gt;
*[[Обратное распространение ошибки]]&lt;br /&gt;
*[[Практики реализации нейронных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Глубокое обучение==&lt;br /&gt;
*[[Глубокое обучение]]&lt;br /&gt;
*[[Настройка глубокой сети]]&lt;br /&gt;
*[[Batch-normalization]]&lt;br /&gt;
*[[Рекуррентные нейронные сети]]&lt;br /&gt;
*[[Долгая краткосрочная память]]&lt;br /&gt;
&lt;br /&gt;
===Сверточные сети===&lt;br /&gt;
*[[Сверточные нейронные сети]]&lt;br /&gt;
*[[Neural Style Transfer]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Компьютерное зрение===&lt;br /&gt;
*[[Компьютерное зрение]]&lt;br /&gt;
*[[Задача нахождения объектов на изображении]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Сегментация изображений]]&lt;br /&gt;
*[[PixelRNN и PixelCNN]]&lt;br /&gt;
&lt;br /&gt;
===Порождающие модели===&lt;br /&gt;
*[[Порождающие модели]]&lt;br /&gt;
*[[Generative Adversarial Nets (GAN)]]&lt;br /&gt;
*[[Автокодировщик]]&lt;br /&gt;
*[[Вариационный автокодировщик]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обработка естественного языка===&lt;br /&gt;
*[[Распознавание речи]]&lt;br /&gt;
*[[Обработка естественного языка]]&lt;br /&gt;
*[[Векторное представление слов]]&lt;br /&gt;
*[[Классификация текстов и анализ тональности]]&lt;br /&gt;
*[[Долгая краткосрочная память]]&lt;br /&gt;
*[[Механизм внимания]]&lt;br /&gt;
&lt;br /&gt;
=Автоматическое машинное обучение=&lt;br /&gt;
*[[Автоматическое машинное обучение]]&lt;br /&gt;
*[[Модель алгоритма и ее выбор]]&lt;br /&gt;
*[[Мета-обучение]]&lt;br /&gt;
&lt;br /&gt;
=Работа с данными=&lt;br /&gt;
*[[Уменьшение размерности]]&lt;br /&gt;
*[[Выброс]]&lt;br /&gt;
*[[Алгоритмы сэмплирования]]&lt;br /&gt;
*[[Известные наборы данных]]&lt;br /&gt;
*[[Метод главных компонент (PCA)]]&lt;br /&gt;
*[[Стохастическое вложение соседей с t-распределением]]&lt;br /&gt;
&lt;br /&gt;
=Обучение с подкреплением=&lt;br /&gt;
*[[Обучение с подкреплением]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Методы policy gradient и алгоритм асинхронного актора-критика]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Активное обучение=&lt;br /&gt;
*[[Активное обучение]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Примеры кода=&lt;br /&gt;
*[[Обзор библиотек для машинного обучения на Python]]&lt;br /&gt;
*[[Примеры кода на Java]]&lt;br /&gt;
*[[Примеры кода на Scala]]&lt;br /&gt;
&lt;br /&gt;
=В разработке=&lt;br /&gt;
*[[Графовые нейронные сети]]&lt;br /&gt;
*[[Рекомендательные системы]]&lt;br /&gt;
*[[Настройка гиперпараметров]]&lt;br /&gt;
*[[Примеры кода на R]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[PixelRNN и PixelCNN]]&lt;br /&gt;
*[[:Рекурсивные нейронные сети|Рекурсивные нейронные сети]]&lt;br /&gt;
*[[Дополнение к ранжированию]]&lt;br /&gt;
*[[Поиск архитектуры нейронной сети]]&lt;br /&gt;
*[[Генерация объектов]]&lt;br /&gt;
*[[Распознавание текста на изображении]]&lt;br /&gt;
*[[Обучение в реальном времени]]&lt;br /&gt;
*[[Оценка положения]]&lt;br /&gt;
*[[Примеры кода на Kotlin]]&lt;br /&gt;
*[[Примеры кода на Kotlin в Jupyter Notebook]]&lt;br /&gt;
*[[Сети глубокого доверия]]&lt;br /&gt;
*[[Многопоточность в машинном обучении]]&lt;/div&gt;</summary>
		<author><name>AccountAll</name></author>	</entry>

	</feed>