Сбер вакансии Backend
Сбер вакансии Backend
Сбер вакансии Backend
Написать пост

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему

Отредактировано

29К открытий30К показов
Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему

Рассказывает Даниель Джеффрис 

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

Итак, займёмся подбором комплектующих. Я предложу три варианта: бюджетный, средний и навороченный.

Но сперва — экспресс-вариант

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 1

Если вы не хотите собирать новый компьютер, можно просто обновить старый! Купите видеокарту Titan X или GTX 1080 (а недавно Nvidia анонсировала и более мощную GTX 1080 Ti) и установите VMware Workstation или любую другую виртуальную машину с поддержкой видеоускорителей. В качестве альтернативы можно поставить основной системой Linux, а Windows установить на виртуальную машину — таким образом вы получите максимальную производительность для машинного обучения.

Потом установите необходимые фреймворки, о которых мы поговорим во втором разделе этой статьи, и вы получите готовую систему, причём весьма дешёвую.

Подбор комплектующих

Я буду помечать дорогие и бюджетные варианты следующим образом:

  • ДнП (Деньги — не проблема) = наилучший вариант;
  • ЗПБ (Зачем платить больше?) = оптимальный вариант;
  • ДиС (Дёшево и сердито) = бюджетный вариант.

Видеокарта — всему голова

Центральный процессор — больше не самая важная часть компьютера. Для навороченных игровых систем нужны мощные процессоры, но не для машинного обучения — там роль Intel исполняет Nvidia.

Хотя карты AMD и зарекомендовали себя в майнинге криптовалюты, до ИИ они ещё не доросли. Скоро это изменится, но пока Nvidia на коне. Но не стоит сбрасывать Intel со счетов. Она приобрела компанию Nervana Systems и собирается начать выпускать специализированные чипы для машинного обучения уже в этом году.

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 2

Начнём с ДнП. Безоговорчный лидер — это Titan X. Ему просто нет равных.

В ней установлено 3584 ядер CUDA на частоте 1531 МГц и 12 ГБ видеопамяти GDDR5X с пропускной способностью 10 Гб/с.

Для машинного обучения важно количество ядер и объём памяти. По сути, алгоритмы машинного обучения — это всего лишь куча линейной алгебры. Представьте огромную таблицу Excel. Простой 4- или 8-ядерный процессор Intel просто не справится с таким объёмом данных.

Перемещение данных из памяти и в неё очень сильно ограничивает вычислительный процесс, поэтому чем больше памяти есть на карте, тем лучше. Поэтому Titan X и является лучшей.

Жаль, но на официальном сайте можно купить лишь 2 карты. Но для нас деньги — не проблема, поэтому ещё две мы возьмём где-нибудь ещё. Да, это 4-way SLI! Обойдётся он вам примерно в 360 тысяч (на момент написания статьи — прим. перев.), но это львиная доля затрат.

Любые бенчмарки предупредят вас, что SLI из более чем 2 карт не даст значительного прироста, но нам же не в игрушки играть (ладно, будем честны, не только в игрушки играть)! Для работы с ИИ нужно использовать максимально возможное количество видеокарт, поэтому четыре — это вовсе не предел. Заметьте, что вам не нужен мостик для SLI, если вы не планируете использовать систему для игр. Максимум, что будет связано с графикой — это построение графиков в matplotlib.

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 3

Теперь поговорим о ЗПБ. Вам подойдёт карта GeForce GTX 1080 Founders Edition. В ней всего лишь 2560 ядер CUDA, гораздо меньше, чем в Titan X, но она и стоит в два раза дешевле, 46 тысяч рублей. Памяти в ней тоже меньше, 8 ГБ вместо 12. Ещё один неплохой ДиС-вариант — это GeForce GTX 1070. Она может похвастаться 1920 ядрами CUDA и приемлемой ценой — 32 тысячи рублей. Таким образом, SLI из 4 карт обойдётся вам без малого в 130 тысяч рублей.

Конечно, можно обойтись двумя или тремя картами. По-хорошему, вам хватит и одной.

Итак, давайте рассмотрим оптимальные варианты:

  • 3 x Titan X = 10 752 ядер CUDA, 36 ГБ видеопамяти = 270 тыс. руб.
  • 2 x Titan X = 7167 ядер CUDA, 24 ГБ видеопамяти = 180 тыс. руб.
  • 3 x GTX 1080 = 7680 ядер CUDA, 24 ГБ видеопамяти = 138 тыс. руб.
  • 2 x GTX 1080 = 5120 ядер CUDA, 16 ГБ видеопамяти = 92 тыс. руб.
  • 3 x GTX 1070 = 5760 ядер CUDA, 24 ГБ видеопамяти = 96 тыс. руб.
  • 2 x GTX 1070 = 3840 ядер CUDA, 16 ГБ видеопамяти = 62 тыс. руб.

Оптимальный вариант — три GTX 1080. В два раза дешевле, чем «титаны» и всего на 3072 ядра меньше. Для своей системы я выбрал именно его.

Наконец, ДиС-вариант: GTX 1060. 6 ГБ видеопамяти и 1280 ядер CUDA за 17 тысяч рублей — это лучший бюджетный вариант.

Хранилище данных

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 4

Вам понадобится SSD, особенно если вы будете работать со свёрточными нейронными сетями и обрабатывать много изображений. Samsung 850 EVO ёмкостью 1 ТБ — это ДнП-вариант. Кроме того, за последний год цены на SSD значительно снизились, поэтому такая покупка не сильно ударит по кошельку. На момент написания статьи эта модель стоит порядка 20 тысяч рублей.

ЗПБ-вариант — это SSD той же модели, но на 250 ГБ. Стоит он примерно 6 тысяч.

Вам также понадобится HDD для хранения наборов данных. Они могут быть очень большими, поэтому стоит взять диск ёмкостью не меньше 4 ТБ, производитель не так уж и важен. Стоить он будет порядка 10 тысяч.

В качестве ДиС-альтернативы можно взять SSD от SanDisk на 240 ГБ за 4 тысячи рублей и HDD на 1 ТБ, но я считаю, что лишней памяти не бывает.

Оперативная память

Я советую брать не менее 16 ГБ оперативной памяти типа DDR4. Многие говорят, что оперативной памяти должно быть в 2 раза больше, чем видеопамяти, но 16 ГБ вам должно хватить. Я бы посоветовал модель Corsair Vengeance DDR4–3000, набор из двух планок по 8 ГБ будет стоить примерно 10 тысяч рублей.

Материнская плата

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 5

Поскольку мы хотим поместить в наш корпус 4 видеокарты, наш выбор очень невелик. Лучшим вариантом будет материнская плата MSI Extreme Gaming X99A SLI Plus. Также подойдёт ASUS X99 Deluxe II.

Если же вы используете меньше 4 карт, вариантов становится гораздо больше. В материнских платах главное — стабильность. В этом я убедился, когда собирал системы для майнинга криптовалюты. Gigabyte разработала отличную линейку надёжных материнских плат. Модель X99 Ultra Gaming оптимальна и стоит порядка 20 тысяч.

Корпус

Cooler Master Cosmos II — это ультимативный корпус форм-фактора EATX. Его стильный внешний вид отлично дополнит вашу систему.

Тем, кому нужен корпус поменьше, подойдёт Cooler Master Maker 5T.

Я никогда не видел смысла в покупке дешёвого корпуса. Тем не менее, в продаже есть множество достойных бюджетных вариантов, и перечислять их здесь нет смысла.

Процессор

Что делать, если вы хотите изучать ИИ, но не шарите в математике? Часть третья. Собираем и настраиваем систему 6

Вашей машине для машинного обучения не нужен мощный процессор. Большинство приложений многопоточны лишь на графическом процессоре, поэтому разоряться на процессор не стоит.

Поэтому вам стоит купить процессор с наибольшей тактовой частотой, т.е. i7-6700K с частотой 4 ГГц. Да, может показаться, что это перебор, но в последнее время цена на него только падает, так что почему бы и нет?

ЗПБ-альтернативы здесь нет.  i5 с частотой 3,5 ГГц стоит немногим дешевле, так какая разница?

ДиС-вариант здесь — двухядерный i3-6100 c частотой 3.7 ГГц, стоит он порядка 7 тысяч.

Блок питания

Блок питания EVGA Modular 1600 Supernova G2 — это лучший вариант для сборки с 4 видеокартами. Он обойдётся вам где-то в 18 тысяч.

Titan X потребляет порядка 250 ватт — вот уже тысяча, и на всё остальное остаётся не так уж и много, а БП лучше брать с запасом.

Если вы используете меньше видеокарт, вам подойдёт модель на 1300 Вт. ДиС-альтернатива — модель на 750 Вт.

Настройка системы

Теперь, когда мы закончили с железом, займёмся настройкой софта.

У вас есть три варианта:

  • Docker-контейнер;
  • Виртуальная машина;
  • Чистая установка.

Docker

Если вы хотите пойти по этому пути, то вам стоит начать с официального проекта Nvidia-Docker. Однако вам всё равно придётся ставить кучу фреймворков и библиотек поверх этого образа.

Конечно, вы можете поставить и контейнер со всем необходимым для машинного обучения, например, такой. К сожалению, в нём есть некоторые пока не решённые проблемы, да и на Dockerhub он не поместится, поэтому времени на ручную настройку вам придётся потратить немало.

Виртуальная машина

Как я и сказал в начале статьи, вы можете просто обновить железо вашего игрового компьютера, поставить VMware Workstation Pro, поддерживающую работу с графическими процессорами, и начать работать. Это самый дешёвый вариант, да и весьма удобный в использовании.

Чистая установка

В результате я выбрал именно этот вариант. Да, немного олдскульно, но поскольку я давно работаю сисадмином, то решил сделать всё вручную — таким образом можно максимально контролировать систему.

Сперва обсудим несколько деталей, сваязанных с ПО. Вы поймёте, что большая часть вычислений производится при помощи Python. В дальнейшем это может поменяться, но пока что это основной язык. Популярны также R и Scala, их мы тоже рассмотрим.

Вот список всех основных пакетов, которые мы установим:

Языки

  • Python 2.x;
  • Anaconda (и Python 3.6) — высокопроизводительный дистрибутив Python, содержащий более 100 популярных пакетов Python, R и Scala;
  • R — язык и среда для статистических расчётов;
  • Scala — язык, похожий на Java, но гораздо более производительный.

Драйверы и API

Приложения-помощники

  • Jupyter — отличное веб-приложение, которое позволит делиться документацией и кодом.

Фреймворки / библиотеки

  • TensorFlow — открытый фреймворк Google для машинного обучения, на котором, например, работает Google Translate;
  • Theano — популярный фреймворк для машинного обучения;
  • Caffe — ещё один фреймворк;
  • Torch — фреймворк для научных вычислений, использующий графические процессоры;
  • MXNET — масштабируемая система для машинного обучения, созданная Amazon и несколькими университетами.

Высокоуровневые библиотеки

  • Keras — высокоуровневая библиотека для работы с нейронными сетями, запускающаяся поверх TensorFlow или Theano;
  • Lasagne — лёгкая библиотека для создания и обучения нейронных сетей.

Python-библиотеки

Написано огромное количество библиотек для разного рода научной деятельности, мы поставим самые нужные:

  • Pip = менеджер пакетов для Python;
  • Pandas = высокопроизводительная библиотека для анализа данных;
  • Scikit-learn = популярная мощная библиотека для машинного обучения;
  • NumPy = численный Python;
  • Matplotlib = библиотека для визуализации;
  • Scipy = математические и научные расчёты;
  • IPython = интерактивный Python;
  • Scrappy = фреймворк для веб-скрапинга;
  • NLTK = набор инструментов для работы с естественными языками;
  • Pattern = библиотека для веб-майнинга;
  • Seaborn = статистические визуализации;
  • OpenCV = библиотека для работы с компьютерным зрением;
  • Rpy2 = интерфейс для R;
  • Py-graphviz = статистические графики;
  • OpenBLAS = линейная алгебра.

Настройка Linux-системы

Я рекомендую поставить последнюю версию Ubuntu LTS (16.04 на момент написания статьи). Запишите её на флешку при помощи программы Rufus и установите в UEFI-режиме.

Первый запуск

Запустив систему, вы увидите чёрный экран. Некоторые из драйверов просто не обновлены. Чтобы это исправить, сделайте следующее.

Когда компьютер загрузится, откройте терминал:

			Ctrl + Alt + F1
		

Скачайте последние драйвера и перезагрузите систему:

  • В терминале залогиньтесь как суперпользователь;
  • Выполните sudo apt-get purge nvidia-*;
  • Выполните sudo add-apt-repository ppa:graphics-drivers/ppa и sudo apt-get update;
  • Выполните sudo apt-get install nvidia-375;
  • После перезагрузки проблемы с графикой должны исчезнуть.

Обновление системы

Откройте терминал и введите следующее:

			sudo apt-get update -y

sudo apt-get upgrade -y

sudo apt-get install -y build-essential cmake g++ gfortran git pkg-config python-dev software-properties-common wget

sudo apt-get autoremove

sudo rm -rf /var/lib/apt/lists/*
		

CUDA

Скачайте CUDA 8 с сайта Nvidia. Перейдите в каталог загрузок и установите CUDA:

			sudo dpkg -i cuda-repo-ubuntu1604-8-0-local.deb

sudo apt-get update -y

sudo apt-get install -y cuda
		

Добавьте CUDA в список переменных окружения:

			echo ‘export PATH=/usr/local/cuda/bin:$PATH’ >> ~/.bashrc

echo ‘export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH’ >> ~/.bashrc

source ~/.bashrc
		

Проверьте версию CUDA:

			nvcc -V
		

Перезагрузите компьютер:

			sudo shutdown -r now
		

Убедитесь, что всё установилось корректно. Сперва установите образцы CUDA:

			/usr/local/cuda/bin/cuda-install-samples-*.sh ~/cuda-samples

cd ~/cuda-samples/NVIDIA*Samples

make -j $(($(nproc) + 1))
		

Обратите внимание, что +1 означает количество графических процессоров, поэтому число можно увеличить, ускорив тем самым время установки и компиляции.

После этого запустите deviceQuery и убедитесь, что все графические тесты успешно проходятся:

			bin/x86_64/linux/release/deviceQuery
		

cuDNN

cuDNN — это библиотека для работы с развёртывающими нейронными сетями с поддержкой графических ускорителей. К сожалению, её нельзя просто скачать с репозитория. Вам придётся зарегистрироваться в программе Nvidia и подождать пару дней, чтобы получить доступ. Скачивайте 4 и 5 версии. Я ставил пятую.

Прежде чем ставить все другие фреймворки, дождитесь предоставления вам доступа к этой библиотеке — другие зависят от неё и могут не работать.

Извлеките и скопируйте файлы:

			cd ~/Downloads/

tar xvf cudnn*.tgz

cd cuda

sudo cp */*.h /usr/local/cuda/include/

sudo cp */libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
		

Запустите проверку:

			nvidia-smi
		

Python

			sudo apt-get install -y python-pip python-dev

sudo apt-get update && apt-get install -y python-numpy python-scipy python-nose python-h5py python-skimage python-matplotlib python-pandas python-sklearn python-sympy libfreetype6-dev libpng12-dev libopenjpeg5

sudo apt-get clean && sudo apt-get autoremove

rm -rf /var/lib/apt/lists/*
		

Установите остальные библиотеки через Pip:

			pip install seaborn rpy2 opencv-python pygraphviz pattern nltk scrappy
		

Tensorflow

			pip install tensorflow-gpu
		

Вот и всё!

Проверка Tensorflow:

			$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
		

OpenBLAS

			sudo apt-get install -y libblas-test libopenblas-base libopenblas-dev
		

Jupyter

			pip install -U ipython[all] jupyter
		

Theano

			sudo apt-get install -y python-numpy python-scipy python-dev python-pip python-nose g++ python-pygments python-sphinx python-nose

sudo pip install Theano
		

Да, Theano пишется с заглавной буквы.

Проверьте Theano — не должно быть никаких предупреждений и ошибок:

			python
>>> import theano
>>> exit()
nosetests theano
		

Keras

Keras — это очень мощная высокоуровневая обёртка над Theano и Tensorflow. Она настолько проста, что становится скучно.

			sudo pip install keras
		

Lasagne

Lasagne — это ещё одна популярная обёртка, но более сложная и мощная, чем Keras. Инструкции по установке можно скачать здесь.

			pip install -r https://raw.githubusercontent.com/Lasagne/Lasagne/v0.1/requirements.txt
		

MXNET

MXNET — это масштабируемый фреймворк, поддерживаемый Amazon. Инструкции по установке можно найти на его официальном сайте, а скрипт для установки MXNet for Python — на GitHub.

Установка MXNet на Ubuntu

Вот что гласит сайт:

MXNet на настоящий момент поддерживает Python, R, Julia и Scala. Пользователи Python и R на Ubuntu могут воспользоваться набором скриптов, которые устанавливают все зависимости и саму библиотеку в папку ~/mxnet.

Установка MXNet for Python

Склонируйте репозиторий MXNet. Выполните команды в терминале без sudo:

			git clone https://github.com/dmlc/mxnet.git ~/mxnet --recursive
		

Мы работаем на графических процессорах, поэтому добавьте настройки в файл config.mk:

			cd ~/mxnet

cp make/config.mk .

echo "USE_CUDA=1" >>config.mk

echo "USE_CUDA_PATH=/usr/local/cuda" >>config.mk

echo "USE_CUDNN=1" >>config.mk
		

Установите MXNet for Python со всеми зависимостями:

			cd ~/mxnet/setup-utils

bash install-mxnet-ubuntu-python.sh
		

Добавьте его в путь:

			source ~/.bashrc
		

Установка MXNet for R

Прежде всего нам понадобится R.

Сперва добавьте репозиторий R:

			sudo echo “deb http://cran.rstudio.com/bin/linux/ubuntu xenial/” | sudo tee -a /etc/apt/sources.list
		

Добавьте R в Ubuntu Keyring:

			gpg — keyserver keyserver.ubuntu.com — recv-key E084DAB9

gpg -a — export E084DAB9 | sudo apt-key add -
		

Установите R-Base:

			sudo apt-get install r-base r-base-dev
		

Установите R-Studio (укажите нужную версию):

			sudo apt-get install -y gdebi-core

wget https://download1.rstudio.org/rstudio-0.99.896-amd64.deb

sudo gdebi -n rstudio-0.99.896-amd64.deb

rm rstudio-0.99.896-amd64.deb
		

Установите MXNet for R:

			cd ~/mxnet/setup-utils

bash install-mxnet-ubuntu-r.sh
		

Caffe

Инструкции можно найти на официальном сайте проекта. Они немного непонятные, да и пользоваться им нам придётся редко, так что я бы на вашем месте пропустил этот этап.

Установите все зависимости:

			sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install -y --no-install-recommends libboost-all-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
		

Склонируйте репозиторий:

			cd ~/git

git clone https://github.com/BVLC/caffe.git

cd caffe

cp Makefile.config.example Makefile.config
		

Чтобы использовать cuDNN, установите флаг USE_CUDNN := 1 в Makefile:

			sed -i ‘s/# USE_CUDNN := 1/USE_CUDNN := 1/‘ Makefile.config
		

Измените параметры BLAS:

			sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
		

Установите файл requirements, соберите Caffe, соберите и запустите тесты и убедитесь, что они успешно пройдены. Опять-таки, обратите внимание на +1 — это число можно увеличить.

			sudo pip install -r python/requirements.txt

make all -j $(($(nproc) + 1))

make test -j $(($(nproc) + 1))

make runtest -j $(($(nproc) + 1))
		

Соберите PyCaffe, Python-интерфейс для Caffe:

			make pycaffe -j $(($(nproc) + 1))
		

Добавьте Caffe в список переменных окружения:

			echo ‘export CAFFE_ROOT=$(pwd)’ >> ~/.bashrc

echo ‘export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH’ >> ~/.bashrc

source ~/.bashrc
		

Убедитесь, что установка прошла успешно.

			ipython
>>> import caffe
>>> exit()
		

Torch

Инструкции можно найти на сайте проекта. При установке фреймворка я столкнулся с небольшими проблемами, но обычно их не возникает.

			git clone https://github.com/torch/distro.git ~/git/torch — recursive

cd torch; bash install-deps;

./install.sh
		

Scala

			sudo apt-get -y install scala
		

Anaconda

Скачайте Anaconda для Python 3.6 отсюда. У них также есть версия для 2.7.x.

Установите её:

			sudo bash Anaconda3–4.3.0-Linux-x86_64.sh
		

Ни в коем случае не добавляйте её в список переменных окружения, иначе она заменит собой Python.

Создайте два окружения, между которыми можно будет переключаться для выбора нужной версии:

			conda create -n py2 python=2.7

conda create -n py3 python=3.6
		

Активируйте окружение 3:

			source activate py3
		

Установите все пакеты для Anaconda:

			conda install pip pandas scikit-learn scipy numpy matplotlib ipython-notebook seaborn opencv scrappy nltk pattern
		

Установите pygraphviz и R-интерфейс при помощи pip:

			pip install pygraphviz rpy2
		

Перезагрузите компьютер:

			sudo shutdown -r now
		

Установка Tensorflow, Theano и Keras для Anaconda

Вы установите эти библиотеки для второй и третьей Python-версий Anaconda. Это повысит производительность.

Сперва поставьте версию Python 3:

			source activate py3

pip install tensorflow Theano keras
		

Отключите окружение и включите окружение py2:

			source deactivate

source activate py2
		

Установите библиотеки для py2:

			pip install tensorflow Theano keras
		

Отключите окружение:

			source deactivate
		

Теперь у вас есть стандартная оболочка Ubuntu с встроенным Python 2.7.x и всеми необходимыми фреймворками.

Заключение

Вот и всё. Вы собрали компьютер по своим возможностям и настроили систему, напичкав её всем необходимым для машинного обучения софтом.

Следите за новыми постами
Следите за новыми постами по любимым темам
29К открытий30К показов