Методические указания по созданию простейшей модели нейронной сети

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Всем привет, данная методичка была взята у одного препода в универе в котором я учился. Может кому будет интересно, увы, кодовая база в скриншотах, да и текст как-то странновато написан и тема сисек раскрыта не полностью=) Попозже попробую повторить и переделаю код в текст.
В данной методичке мы познакомимся с основами построения нейронной модели, а также попробуем её обучить, используя датасеты с данными.
Перед началом работы, обязательно удостоверьтесь что у вас есть права администратора, это позволит воспользоваться всеми возможностями компьютера, которых не будет без этих прав.
Стэк технологий которые с которыми мы будем работать:

Таблица 1 – Список технического оборудования (конфигурация системы которую использовал преподаватель)
Железо/ Прогр. Обеспеч.ВерсияОписание
Windows 11 64-bit22H2Операционная система, выпущенная Microsoft, представляет собой последнюю версию линейки операционных систем Windows
AMD Ryzen 74800HSПредставляет собой процессор, разработанный и выпущенный компанией Advanced Micro Devices (AMD). Этот процессор предназначен для высокопроизводительных настольных и
мобильных систем.
NVIDIA GeForce GTX
1650ti​
Графический процессор (GPU), производимый компанией NVIDIA и предназначенный для использования в геймерских компьютерах, ноутбуках и рабочих станциях.

Таблица 2 – Список используемых библиотек и технологий
Приложение/ библиотекаВерсияОписание
Microsoft Visual Studio Code1.18.5Среда разработки, где можно использовать язык программирования Python для последующего создания нейронной сети.
Miniconda323.9.0Облегченная версия дистрибутива Conda. Является пакетным менеджером и средой управления пакетами для языков программирования, в нашем случае для Python. Conda позволяет легко устанавливать, обновлять и управлять зависимостями пакетов и окружениями.
TensorFlow2.6.0Открытая библиотека машинного обучения, разработанная и поддерживаемая Google. Предназначена для построения и обучения различных моделей машинного обучения, особенно для задач работы с данными, связанными с искусственным интеллектом и глубоким обучением.
Numpy1.23.0Библиотека с открытым исходным кодом для языка программирования Python. Возможности: поддержка многомерных массивов; поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
Matplotlib3.7.0Библиотека на языке программирования Python для визуализации данных двумерной графикой. Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.
Pillow10.1.0Библиотека Python для работы с изображениями. Предоставляет простой и удобный интерфейс для открытия, обработки и сохранения различных форматов изображений.
Protobuf3.17.2Метод сериализации данных, разработанный Google. Протокол предоставляет эффективный и универсальный способ обмена структурированными данными между разными системами и языками программирования. Используется для передачи данных между компонентами распределенных систем, обмена сообщениями в сетевых протоколах и хранения данных.
Python3.9.18Высокоуровневый, интерпретируемый, объектно-ориентированный язык программирования.
cuDNN NVIDIA8.2.1Библиотека примитивов с ускорением на GPU для глубоких нейронных сетей. cuDNN предоставляет хорошо настроенные реализации для стандартных процедур, таких как прямая и обратная свертка, объединение, нормализация и уровни активации.
CUDA Toolkit11.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).
1729564604658.png


Рисунок 1 – Скачиваем Visual Studio Code

Далее устанавливаем программу оставляя все галочки по умолчанию. По окончанию установки не запускаем программу и жмем кнопку завершить (Рисунок 2).
1729564709005.png


Рисунок 2 – Завершение установки​
Теперь у нас появляется два этапа как дальше продолжить построение платформы, для этого перейдем на официальный сайт TensorFlow и посмотрим, что там говорят по установке и настройке для работы с их библиотекой (ссылка на сайт): https://www.tensorflow.org/install/pip?hl=ru#windows-native
Как мы видим из представленной статьи на их сайте, для нас на Windows 11 есть 1 вариант установки TensorFlow + СPU и 2 варианта установки TensorFlow + GPU:
1. Это нативная установка, где все компоненты мы устанавливаем целиком на наш компьютер, но обращая внимание на примечание мы видим, что начиная с версии TensorFlow 2.10 и выше, появляются дополнительные особенности при установке и могу возникнуть проблемы (Рисунок 3).


1729564996261.png


Рисунок 3 – Установка TensorFlow + CPU нативно на Windows

2. Тоже нативная установка, но обращая внимание уже на красную пометку мы видим, что начиная с версии TensorFlow 2.11 и выше не поддерживает графический процессор на нативном уровне, а это значит, что улучшения добавленные в новых версия нам не будут доступны в нативной версии (Рисунок 4).
1729565213476.png


Рисунок 4 – Установка TensorFlow + GPU нативно на Windows
С помощью Windows WSL2, это что-то вроде обертки Linux под Windows позволяющий запускать на системе Windows, Linux нуждающиеся программы. C помощью этой обертки мы уже можем пользоваться более новыми версиями и функциями для связки установки TensorFlow + GPU (Рисунок 5).

1729565474712.png


Рисунок 5 – Установка TensorFlow + GPU через Windows WSL2
Ну всё, с не большой теорией мы разобрались, и теперь вы наверное уже пришли к выводу, что если нам нужно более новые версии TensorFlow мы должны работать через Windows WSL2 для GPU и CPU, а если нужны старые, то можно и нативно, но только до определённой версии с GPU, а на CPU это не распространяется, c этим убеждением я с вами соглашусь на 100%, но все это было бы просто замечательно если это на этом было бы всё, но к примеру при работе с нативной версией GPU нам придется разбираться с различными версиями и их совместимостью.
Так как, мы просто не можем Скачать
View hidden content is available for registered users!
 
Сверху Снизу