D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Всем привет, данная методичка была взята у одного препода в универе в котором я учился. Может кому будет интересно, увы, кодовая база в скриншотах, да и текст как-то странновато написан и тема сисек раскрыта не полностью=) Попозже попробую повторить и переделаю код в текст.
В данной методичке мы познакомимся с основами построения нейронной модели, а также попробуем её обучить, используя датасеты с данными.
Перед началом работы, обязательно удостоверьтесь что у вас есть права администратора, это позволит воспользоваться всеми возможностями компьютера, которых не будет без этих прав.
Стэк технологий которые с которыми мы будем работать:
Обучение нейронных сетей по железной части обычно включает использование специализированных процессоров и ускорителей, таких как графические процессоры (GPU), тензорные процессоры (TPU), аппаратные ускорители для машинного обучения, а также процессоры общего назначения
(CPU). Вот более подробное описание различных методов обучения нейронных сетей в железной части:
Процессоры общего назначения (CPU):
Универсальные вычисления: Процессоры общего назначения, такие как Intel Core или AMD Ryzen, предоставляют универсальные возможности для обучения нейронных сетей и широкий спектр обработки задач.
Многозадачность: CPU эффективно обрабатывают множество задач одновременно, что полезно в контексте обучения нейронных сетей.
Графические процессоры (GPU):
Параллельные вычисления: Графические процессоры предназначены для обработки графики, и их параллельная архитектура делает их эффективными для обучения нейронных сетей, которые требуют интенсивных вычислений.
CUDA и OpenCL: Программные интерфейсы, такие как CUDA (для NVIDIA GPU) и OpenCL (для различных GPU), позволяют разработчикам программировать графические процессоры для выполнения операций машинного обучения.
Тензорные процессоры (TPU):
Оптимизированные для тензорных операций: Тензорные процессоры, такие как Google TPU, созданы специально для выполнения операций, связанных с тензорами, используемыми в глубоком обучении.
Ускорение инференса и обучения: TPU могут быть использованы как для обучения, так и для инференса (применения обученной модели к новым данным).
ASIC (Application-Specific Integrated Circuit):
Специализированные чипы: ASIC представляют собой специализированные интегральные микросхемы, разработанные для выполнения конкретных вычислительных задач. В области машинного обучения могут использоваться ASIC, оптимизированные для операций нейронных сетей.
FPGA (Field-Programmable Gate Array):
Программируемые чипы: FPGA обеспечивают гибкость программирования на уровне аппаратного обеспечения. Они могут быть программированы для выполнения различных вычислительных задач, включая операции нейронных сетей.
В нашем случае нам подходит 2 типа железных мощностей это СPU и GPU, в данной методических указаниях мы рассмотрим эти два вида и сравним их в сложности настройке и в скорости обучения нейронной сети.
Теоретическая часть по популярным библиотекам используемых в создании нейронных сетей:
Существует множество библиотек и фреймворков для создания нейронных сетей, предоставляющих разработчикам мощные инструменты для проектирования, обучения и развертывания искусственных нейронных сетей. Вот несколько популярных библиотек, используемых в создании нейронных сетей:
1. TensorFlow:
Описание: Разработана компанией Google. TensorFlow предоставляет открытый исходный код и широкие возможности для создания различных типов нейронных сетей. Имеет обширное сообщество и много ресурсов для обучения.
Особенности: Гибкость, масштабируемость, поддержка для различных уровней абстракции, включая Keras (встроен в TensorFlow).
2. PyTorch:
Описание: Разработана Facebook. PyTorch является фреймворком с открытым исходным кодом, который активно используется в исследовательских проектах и становится все более популярным в индустрии.
Особенности: Динамический вычислительный граф, интуитивный интерфейс, легко использовать для исследований.
3. Keras:
Описание: Изначально разработана как высокоуровневый интерфейс поверх TensorFlow, Keras теперь поддерживается и другими библиотеками, включая Microsoft Cognitive Toolkit (CNTK) и Theano.
Особенности: Простота использования, понятный интерфейс, хорошая абстракция для быстрого создания моделей нейронных сетей.
4. MXNet:
Описание: Проект Apache MXNet предоставляет гибкий и эффективный фреймворк для глубокого обучения. Он широко используется в индустрии иисследовательских проектах.
Особенности: Масштабируемость, поддержка различных уровней абстракции, включая Gluon, и хорошая производительность.
5. Caffe:
Описание: Caffe является быстрым и эффективным фреймворком для глубокого обучения, который изначально разрабатывался в университете Беркли.
Особенности: Простота использования, высокая производительность в обработке изображений.
6. Theano:
Описание: Theano был одним из первых фреймворков для глубокого обучения, но его активная разработка была прекращена. Однако, он все еще используется в некоторых проектах.
Особенности: Эффективность, оптимизация для работы с GPU.
7. CNTK (Microsoft Cognitive Toolkit):
Описание: Разработан Microsoft. CNTK предоставляет мощные инструменты для обучения глубоких нейронных сетей и был использован в различных исследованиях и приложениях Microsoft.
Особенности: Высокая производительность, поддержка для различных моделей.
Для создания своей модели нейронной сети был выбран TensorFlow из-за своего обширного сообщества позволяющий нам найти множество информации по созданию собственной модели нейросети, а также огромного ресурсного и функционального потенциала при её обучении и настройке.
Как мы видим из представленной статьи на их сайте, для нас на Windows 11 есть 1 вариант установки TensorFlow + СPU и 2 варианта установки TensorFlow + GPU:
1. Это нативная установка, где все компоненты мы устанавливаем целиком на наш компьютер, но обращая внимание на примечание мы видим, что начиная с версии TensorFlow 2.10 и выше, появляются дополнительные особенности при установке и могу возникнуть проблемы (Рисунок 3).
Рисунок 3 – Установка TensorFlow + CPU нативно на Windows
2. Тоже нативная установка, но обращая внимание уже на красную пометку мы видим, что начиная с версии TensorFlow 2.11 и выше не поддерживает графический процессор на нативном уровне, а это значит, что улучшения добавленные в новых версия нам не будут доступны в нативной версии (Рисунок 4).
Рисунок 4 – Установка TensorFlow + GPU нативно на Windows
С помощью Windows WSL2, это что-то вроде обертки Linux под Windows позволяющий запускать на системе Windows, Linux нуждающиеся программы. C помощью этой обертки мы уже можем пользоваться более новыми версиями и функциями для связки установки TensorFlow + GPU (Рисунок 5).
Рисунок 5 – Установка TensorFlow + GPU через Windows WSL2
Ну всё, с не большой теорией мы разобрались, и теперь вы наверное уже пришли к выводу, что если нам нужно более новые версии TensorFlow мы должны работать через Windows WSL2 для GPU и CPU, а если нужны старые, то можно и нативно, но только до определённой версии с GPU, а на CPU это не распространяется, c этим убеждением я с вами соглашусь на 100%, но все это было бы просто замечательно если это на этом было бы всё, но к примеру при работе с нативной версией GPU нам придется разбираться с различными версиями и их совместимостью.
Так как, мы просто не можем Скачать
В данной методичке мы познакомимся с основами построения нейронной модели, а также попробуем её обучить, используя датасеты с данными.
Перед началом работы, обязательно удостоверьтесь что у вас есть права администратора, это позволит воспользоваться всеми возможностями компьютера, которых не будет без этих прав.
Стэк технологий которые с которыми мы будем работать:
Таблица 1 – Список технического оборудования (конфигурация системы которую использовал преподаватель)
Железо/ Прогр. Обеспеч. | Версия | Описание |
Windows 11 64-bit | 22H2 | Операционная система, выпущенная Microsoft, представляет собой последнюю версию линейки операционных систем Windows |
AMD Ryzen 7 | 4800HS | Представляет собой процессор, разработанный и выпущенный компанией Advanced Micro Devices (AMD). Этот процессор предназначен для высокопроизводительных настольных и мобильных систем. |
NVIDIA GeForce GTX | 1650ti | Графический процессор (GPU), производимый компанией NVIDIA и предназначенный для использования в геймерских компьютерах, ноутбуках и рабочих станциях. |
Таблица 2 – Список используемых библиотек и технологий
Приложение/ библиотека | Версия | Описание |
Microsoft Visual Studio Code | 1.18.5 | Среда разработки, где можно использовать язык программирования Python для последующего создания нейронной сети. |
Miniconda3 | 23.9.0 | Облегченная версия дистрибутива Conda. Является пакетным менеджером и средой управления пакетами для языков программирования, в нашем случае для Python. Conda позволяет легко устанавливать, обновлять и управлять зависимостями пакетов и окружениями. |
TensorFlow | 2.6.0 | Открытая библиотека машинного обучения, разработанная и поддерживаемая Google. Предназначена для построения и обучения различных моделей машинного обучения, особенно для задач работы с данными, связанными с искусственным интеллектом и глубоким обучением. |
Numpy | 1.23.0 | Библиотека с открытым исходным кодом для языка программирования Python. Возможности: поддержка многомерных массивов; поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами. |
Matplotlib | 3.7.0 | Библиотека на языке программирования Python для визуализации данных двумерной графикой. Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях. |
Pillow | 10.1.0 | Библиотека Python для работы с изображениями. Предоставляет простой и удобный интерфейс для открытия, обработки и сохранения различных форматов изображений. |
Protobuf | 3.17.2 | Метод сериализации данных, разработанный Google. Протокол предоставляет эффективный и универсальный способ обмена структурированными данными между разными системами и языками программирования. Используется для передачи данных между компонентами распределенных систем, обмена сообщениями в сетевых протоколах и хранения данных. |
Python | 3.9.18 | Высокоуровневый, интерпретируемый, объектно-ориентированный язык программирования. |
cuDNN NVIDIA | 8.2.1 | Библиотека примитивов с ускорением на GPU для глубоких нейронных сетей. cuDNN предоставляет хорошо настроенные реализации для стандартных процедур, таких как прямая и обратная свертка, объединение, нормализация и уровни активации. |
CUDA Toolkit | 11.3.1 | Набор инструментов NVIDIA® CUDA® Toolkit предоставляет среду разработки для создания высокопроизводительных приложений с ускорением на GPU. |
Подготовка платформы для начала работ
Теоретическая часть по вычислительным мощностям применяемых в машинном обучении:
Обучение нейронных сетей по железной части обычно включает использование специализированных процессоров и ускорителей, таких как графические процессоры (GPU), тензорные процессоры (TPU), аппаратные ускорители для машинного обучения, а также процессоры общего назначения
(CPU). Вот более подробное описание различных методов обучения нейронных сетей в железной части:
Процессоры общего назначения (CPU):
Универсальные вычисления: Процессоры общего назначения, такие как Intel Core или AMD Ryzen, предоставляют универсальные возможности для обучения нейронных сетей и широкий спектр обработки задач.
Многозадачность: CPU эффективно обрабатывают множество задач одновременно, что полезно в контексте обучения нейронных сетей.
Графические процессоры (GPU):
Параллельные вычисления: Графические процессоры предназначены для обработки графики, и их параллельная архитектура делает их эффективными для обучения нейронных сетей, которые требуют интенсивных вычислений.
CUDA и OpenCL: Программные интерфейсы, такие как CUDA (для NVIDIA GPU) и OpenCL (для различных GPU), позволяют разработчикам программировать графические процессоры для выполнения операций машинного обучения.
Тензорные процессоры (TPU):
Оптимизированные для тензорных операций: Тензорные процессоры, такие как Google TPU, созданы специально для выполнения операций, связанных с тензорами, используемыми в глубоком обучении.
Ускорение инференса и обучения: TPU могут быть использованы как для обучения, так и для инференса (применения обученной модели к новым данным).
ASIC (Application-Specific Integrated Circuit):
Специализированные чипы: ASIC представляют собой специализированные интегральные микросхемы, разработанные для выполнения конкретных вычислительных задач. В области машинного обучения могут использоваться ASIC, оптимизированные для операций нейронных сетей.
FPGA (Field-Programmable Gate Array):
Программируемые чипы: FPGA обеспечивают гибкость программирования на уровне аппаратного обеспечения. Они могут быть программированы для выполнения различных вычислительных задач, включая операции нейронных сетей.
В нашем случае нам подходит 2 типа железных мощностей это СPU и GPU, в данной методических указаниях мы рассмотрим эти два вида и сравним их в сложности настройке и в скорости обучения нейронной сети.
Теоретическая часть по популярным библиотекам используемых в создании нейронных сетей:
Существует множество библиотек и фреймворков для создания нейронных сетей, предоставляющих разработчикам мощные инструменты для проектирования, обучения и развертывания искусственных нейронных сетей. Вот несколько популярных библиотек, используемых в создании нейронных сетей:
1. TensorFlow:
Описание: Разработана компанией Google. TensorFlow предоставляет открытый исходный код и широкие возможности для создания различных типов нейронных сетей. Имеет обширное сообщество и много ресурсов для обучения.
Особенности: Гибкость, масштабируемость, поддержка для различных уровней абстракции, включая Keras (встроен в TensorFlow).
2. PyTorch:
Описание: Разработана Facebook. PyTorch является фреймворком с открытым исходным кодом, который активно используется в исследовательских проектах и становится все более популярным в индустрии.
Особенности: Динамический вычислительный граф, интуитивный интерфейс, легко использовать для исследований.
3. Keras:
Описание: Изначально разработана как высокоуровневый интерфейс поверх TensorFlow, Keras теперь поддерживается и другими библиотеками, включая Microsoft Cognitive Toolkit (CNTK) и Theano.
Особенности: Простота использования, понятный интерфейс, хорошая абстракция для быстрого создания моделей нейронных сетей.
4. MXNet:
Описание: Проект Apache MXNet предоставляет гибкий и эффективный фреймворк для глубокого обучения. Он широко используется в индустрии иисследовательских проектах.
Особенности: Масштабируемость, поддержка различных уровней абстракции, включая Gluon, и хорошая производительность.
5. Caffe:
Описание: Caffe является быстрым и эффективным фреймворком для глубокого обучения, который изначально разрабатывался в университете Беркли.
Особенности: Простота использования, высокая производительность в обработке изображений.
6. Theano:
Описание: Theano был одним из первых фреймворков для глубокого обучения, но его активная разработка была прекращена. Однако, он все еще используется в некоторых проектах.
Особенности: Эффективность, оптимизация для работы с GPU.
7. CNTK (Microsoft Cognitive Toolkit):
Описание: Разработан Microsoft. CNTK предоставляет мощные инструменты для обучения глубоких нейронных сетей и был использован в различных исследованиях и приложениях Microsoft.
Особенности: Высокая производительность, поддержка для различных моделей.
Для создания своей модели нейронной сети был выбран TensorFlow из-за своего обширного сообщества позволяющий нам найти множество информации по созданию собственной модели нейросети, а также огромного ресурсного и функционального потенциала при её обучении и настройке.
Скачиваем и устанавливаем необходимый набор ПО
Для начала скачаем IDE для работы с кодом, в нашем случае это будет всем известный Visual Studio Code (ссылка на скачивание): https://code.visualstudio.com/Нажимаем кнопку Dowload for Free, и ожидаем окончания загрузки файла
(Рисунок 1).
Рисунок 1 – Скачиваем Visual Studio Code
Далее устанавливаем программу оставляя все галочки по умолчанию. По окончанию установки не запускаем программу и жмем кнопку завершить (Рисунок 2).
Рисунок 2 – Завершение установки
Теперь у нас появляется два этапа как дальше продолжить построение платформы, для этого перейдем на официальный сайт TensorFlow и посмотрим, что там говорят по установке и настройке для работы с их библиотекой (ссылка на сайт): https://www.tensorflow.org/install/pip?hl=ru#windows-native(Рисунок 1).
Рисунок 1 – Скачиваем Visual Studio Code
Далее устанавливаем программу оставляя все галочки по умолчанию. По окончанию установки не запускаем программу и жмем кнопку завершить (Рисунок 2).
Рисунок 2 – Завершение установки
Как мы видим из представленной статьи на их сайте, для нас на Windows 11 есть 1 вариант установки TensorFlow + СPU и 2 варианта установки TensorFlow + GPU:
1. Это нативная установка, где все компоненты мы устанавливаем целиком на наш компьютер, но обращая внимание на примечание мы видим, что начиная с версии TensorFlow 2.10 и выше, появляются дополнительные особенности при установке и могу возникнуть проблемы (Рисунок 3).
Рисунок 3 – Установка TensorFlow + CPU нативно на Windows
2. Тоже нативная установка, но обращая внимание уже на красную пометку мы видим, что начиная с версии TensorFlow 2.11 и выше не поддерживает графический процессор на нативном уровне, а это значит, что улучшения добавленные в новых версия нам не будут доступны в нативной версии (Рисунок 4).
Рисунок 4 – Установка TensorFlow + GPU нативно на Windows
Рисунок 5 – Установка TensorFlow + GPU через Windows WSL2
Так как, мы просто не можем Скачать
View hidden content is available for registered users!