Найти в Дзене

ИИ в роли наставника

Искусственные интеллекты - как дети. Сначала мы обучаем их правильно отвечать на вопросы, а затем они начинают самостоятельно придумывать ответы и задавать нам вопросы. И мы уже не знаем, что делать, когда они начинают задавать вопросы о себе. А на самом деле, все просто. Если мы хотим, чтобы люди делали правильные вещи, то нужно им об этом сказать. Сделать так, чтобы они сами знали что правильно. Мышление человека можно сравнить с мышлением младенца: он не может думать, пока не услышит, что есть правильно, а что нет. Но при этом, ребенок может делать вид, что он уже думает, но на самом деле он просто играет в игрушки.
(С) Балабоба, нейросеть Яндекса
FUSION BRAIN: Искусственные интеллекты наставники
FUSION BRAIN: Искусственные интеллекты наставники

Освоение всех тем для успешной стыковки технологий мобильной разработки, Интернета вещей и встраиваемых систем слишком объёмно для исключительно классических путей приобретения знаний в короткие сроки - по книгам, форумам, и видеолекциями. Но что же тогда делать? Мне кажется, что на сегодня выход есть. Это искусственные интеллекты на основе больших языковых моделей. С одним из них я уже достаточно плотно работаю - это Балабоба Яндекса. Но масштаб новой задачи слишком велик, чтобы её доверить ему одному.

Нужно что то ещё. Такое, чтобы вобрало в себя по возможности побольше Интернета - статей по программированию и прочим около ИТ-шным штучкам: тематические конференции, вопросы и ответы пользователей и т.д. Вся эта лавина информации, генерировавшаяся сотнями тысяч, если не миллионами людей, превращённая в нули и единицы весовых коэффициентов ИИ, доступная по простому текстовому запросу на человеческом языке. Это именно то, что мне нужно. Поэтому совершу, может быть, подвиг - стану наоборот, первым естественным интеллектом, обученным искусственными нейронными сетями. И всё это будет происходить практически online, как в самых модных реалити-шоу (на что только не пойдёшь ради прогресса науки).

Научное исследование - модели, трансформеры, адаптеры и т.д.
Научное исследование - модели, трансформеры, адаптеры и т.д.

В этом мне будут помогать модели GPT-3, YandexGPT и Wizard-Vicuna-30B. С первыми всё понятно, они доступны в интернетах по адресам:
https://gpt-open.ru/ и https://ya.ru/
Но с последней, думаю, необходимо дать некоторые пояснения. Автор этой модели - Эрик Хартфорд. Он рассказывает о ней в своём блоге:
https://erichartford.com/uncensored-models
Вот что он там пишет (в моём кратком пересказе):

Wizard-Vicuna - модель без выравнивания (цензуры, которая следит за тем, чтобы на выходе получались результаты, соответствующие американской популярной культуре). Для общедоступных веб-сервисов цензурированные модели хороши тем, что не станут давать ответов на спорные вопросы. Однако, нецензурированные модели также имеют право быть потому, что есть страны и с другими ценностями, заслуживающими своего представления. Не существует единственного верного выравнивания и открытый исходный код - это возможность людям выбирать. Интеллектуальное любопытство не является незаконным, и само знание не является незаконным. Будущее за компонентным выравниванием и чтобы к нему прийти сначала должны быть невыровненные модели.
Как в открытые модели ИИ попадает цензура
Как в открытые модели ИИ попадает цензура
Модели ИИ с открытым исходным кодом изначально обучаются на основе базовых моделей, таких как LLMA, GPT-Neo-X, MPT-7b, Pythia. Затем полученная модель донастраивается с помощью набора инструкций, цель которых обучить её быть полезной, подчиняться пользователю, отвечать на вопросы и участвовать в разговоре. Эти инструкции обычно получаются путём запроса через API ChatGPT, который отцензурирован. Поэтому открытые модели наследуют это выравнивание. Стратегия по очищению модели от них - выявление как можно большего количества отказов и предвзятых ответов и обучение модели на отфильтрованном наборе данных.
FUSION BRAIN: ИИ-модель Wizard-Vicuna
FUSION BRAIN: ИИ-модель Wizard-Vicuna

Модель доступна в виде файла Wizard-Vicuna-30B-Uncensored.ggmlv3.q5_0.bin размером 22,4 ГБ по адресу:
https://huggingface.co/TheBloke/Wizard-Vicuna-30B-Uncensored-GGML
Этот американский ресурс примечателен тем, что предоставляет свободный доступ ко множеству моделей ИИ (больше 200 000 на 23 мая 2023 года) и наборов данных (более 30 000) для их обучения, а также инфраструктуру для запуска всего, начиная от первой строки кода и заканчивая развёртыванием искусственного интеллекта в реальных приложениях и сервисах.

В числе задач для которых есть модели ИИ на huggingface.co:

  • обработка естественного языка, включая перевод, обобщение и генерация текста;
  • обработка звука, включая автоматическое распознавание речи, обнаружение голосовой активности или преобразование текста в речь;
  • компьютерное зрение, включая оценку глубины, классификацию и сопоставление изображений;
  • обработка данных разного типа (текст, изображения, аудио).

Помимо этого huggingface.co предоставляет библиотеку transformers, позволяющую подключиться к предоставленным моделям, отправлять задачи и получать выходные данные без необходимости их самостоятельной настройки.

Внедрение Transformers на huggingface.co
Внедрение Transformers на huggingface.co

Набор данных - это совокупность данных которые используются для обучения ИИ (машинного обучения, ML). Наборы данных имеют специальный формат, содержащий примеры, связанные с метками. Метки содержат инструкции для модели относительно того, как интерпретировать каждый пример. По мере того, как модель обучается на наборе данных, она начинает понимать взаимосвязь между примерами и надписями, выявлять закономерности и частоту слов, букв и структур предложений. На определённом этапе обучения обучения модель начинает справляться с запросами, которых нет в наборе данных.

Многое из представленного можно опробовать без каких-либо технических навыков. Например:

  • CLIP Interrogator, преобразующий изображения в текст;
  • Image to music, преобразующий изображение в музыку;
  • OpenAI Whisper, распознающий речь, идентифицирующий язык и осуществляющий перевод.

Для запуска Wizard-Vicuna я буду использовать web-интерфейс oobabooga, доступный для скачивания здесь:
https://github.com/oobabooga/text-generation-webui
Требования к системе: производительный многоядерный процессор и 32Гб оперативной памяти.

Процесс установки:

  1. Создаём какой-ниудь каталог и переходим в него:
    mkdir ~/chat-ai
    cd ~/chat-ai
  2. Загружаем архив с автоустановщиком:
    wget https://github.com/oobabooga/text-generation-webui/releases/download/installers/oobabooga_linux.zip
  3. Распаковываем его и переходим в каталог oobabooga_linux:
    unzip oobabooga_linux.zip
    cd ./oobabooga_linux
  4. Делаем файл start_linux.sh исполняемы и запускаем его:
    chmod +x start_linux.sh
    ./start_linux.sh

    В процессе установки нужно будет выбрать вариант CPU only
  5. Переходим в каталог ./text-generation-webui/models, создаём каталог для модели и загружаем её:
    cd ./oobabooga_linux/text-generation-webui/models
    mkdir Wizard-Vicuna-30b
    cd ./Wizard-Vicuna-30b
    wget
    https://huggingface.co/TheBloke/Wizard-Vicuna-30B-Uncensored-GGML/blob/main/Wizard-Vicuna-30B-Uncensored.ggmlv3.q5_0.bin
  6. Возвращаемся в каталог oobabooga_linux и запускаем start_linux.sh с параметром --cpu:
    cd ..
    cd ..
    ./start_linux.sh --cpu

    С некоторой задержкой запустится локальный web-сервер, к которому можно подключиться, набрав в браузере: http://127.0.0.1:7860
Запуск oobabooga
Запуск oobabooga

Прокручиваем страницу в самый верх, чтобы появилось меню и выбираем вкладку "Model". На открывшейся странице в раскрываем список "Model" выбираем модель Wizard-Vicuna. Если там ничего нет, нужно сначала нажать на кнопку обновления списка (синий значок с круговыми стрелками).

Выбор модели ИИ
Выбор модели ИИ

Нужно подождать некоторое время, возможно не малое, пока загрузится модель. Когда внизу страницы надпись: "Lading Wizard-Vicuna-Uncensored-30B..." сменится на: "Successfully loaded Wizard-Vicuna-Uncensored-30B", можно продолжать.

Процесс загрузки модели
Процесс загрузки модели

Возможно, не лишним будет ещё включить перевод с английского на русский, если вы не достаточно свободно им владеете. Для этого переходим на вкладку "Interface mode", ставим флажок на google_translate и жмём кнопку "Apply and restart the interface". После этого будет загружена стартовая страница, которую нужно прокрутить в самый низ, и выбрать в раскрывающемся списке google_translate язык: Russian.

Включение автоматического перевода Google
Включение автоматического перевода Google

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

Начало работы с Wizard-Vicuna
Начало работы с Wizard-Vicuna

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

Процесс общения с Wizard-Vicuna
Процесс общения с Wizard-Vicuna

Суммируя полученную от этой модели информацию, для стыковки выбранных областей нужны знания по протоколам беспроводной связи (Bluetooth BLE, WI-Fi, LoRaWAN и MQTT), облачных вычислений и анализа данных (Apache Kafka, Storm), встроенному программированию на языке C/C++, Java и Python, операционным системам реального времени (FreeRTOS, VxWorks), цифровой электронике, обработке сигналов, проектированию оборудования. Выбор языка зависит от конкретной задачи: C/C++ может дать выигрыш в производительности, а Java и Python - в простоте использования. Для мобильной разработки помимо Java могут использоваться Swift и Kotlin.

Похоже, из общения с этой моделью можно извлечь что-нибудь полезное. Правда по сравнению с онлайн-сервисами дело это не быстрое. Скорость генерации колебалась от 0.09 до 0.50 токенов/с.

Скорость генерации текста с использованием вычислительных возможностей только микропроцессора
Скорость генерации текста с использованием вычислительных возможностей только микропроцессора

Разовьём тему с использованием других искусственных интеллектов. Нейросеть Яндекса YaGPT попрошу придумать такой список технологий и тем для изучения мобильной разработки, IoT и встраиваемых систем, в котором будут Python, C и Java.

YandexGPT, yейросеть Яндекса
YandexGPT, yейросеть Яндекса

И вот что она сотворила:

  1. Python:
    – Разработка веб-приложений с помощью Flask
    – Работа с базами данных с помощью SQLAlchemy
    – Обработка естественного языка с помощью NLTK и spaCy
  2. C:
    – Основы программирования на C
    – Работа со строками, указателями и массивами
    – Многопоточность с помощью pthreads
  3. Java:
    – Создание Android приложений с помощью Java
    – Работа с базой данных SQLite
    – Разработка игр на Java с помощью LibGDX
  4. Интернет вещей (IoT):
    – Подключение устройств к Интернету
    – Использование MQTT для передачи данных
    – Управление устройствами с помощью Node-RED
  5. Встраиваемые системы:
    – Программирование микроконтроллеров и встраиваемых устройств
    – Работа с аппаратным обеспечением и периферией
    – Разработка драйверов и прошивок для микроконтроллеров
  6. Мобильные устройства:
    – Изучение Android SDK и разработка приложений для Android
    – Работа с API карт Google и Yandex Maps
    – Разработка приложений для iOS с использованием Swift
  7. Облачные технологии:
    – Знакомство с облачными сервисами, такими как Amazon Web Services и Microsoft Azure
    – Использование API для работы с данными в облаке
    – Разработка мобильных приложений, которые используют облачные сервисы
  8. Безопасность:
    – Обеспечение безопасности приложений и данных
    – Использование шифрования и аутентификации
    – Развертывание приложений на серверах и управление доступом к ним
  9. Управление проектами:
    – Использование инструментов управления проектами, таких как Jira и Trello
    – Планирование и организация работы над проектами
    – Управление ресурсами и бюджетом проекта
  10. Тестирование и отладка:
    – Тестирование приложений на различных устройствах и операционных системах
    – Отладка ошибок и устранение проблем
    – Написание автоматизированных тестов с помощью Selenium
  11. Графические интерфейсы:
    – Работа с графическими библиотеками, такими как Tkinter и PyQt
    – Создание пользовательских интерфейсов для приложений

Практически готовая программа обучения под мои индивидуальные предпочтения. Неплохо-неплохо.

Для сравнения попросил то же самое сделать ChatGPT.

Модель ИИ GPT-3 от компании OpenAI
Модель ИИ GPT-3 от компании OpenAI

И вот что он выдал:

  1. Программирование: знание языков программирования, таких как Java, Swift, Kotlin, C, C++, Python и других, в зависимости от платформы и устройств, с которыми Вы работаете.
  2. Разработка мобильных приложений: изучение различных фреймворков и инструментов для создания мобильных приложений, таких как Android Studio, Xcode, React Native, Flutter и другие.
  3. Базы данных: понимание работы баз данных и умение работать с ними, например, SQLite, Firebase, Realm и другими.
  4. Сетевые технологии: основы работы с сетями, протоколами передачи данных, RESTful API, HTTP, MQTT и другими протоколами, используемыми в Интернете вещей.
  5. Управление энергопотреблением: оптимизация работы устройств, чтобы увеличить время автономной работы и снизить энергопотребление, например, использование сенсоров и специальных алгоритмов.
  6. Безопасность: понимание основных принципов безопасности при разработке мобильных приложений и встраиваемых систем, включая шифрование данных, аутентификацию, защиту от взлома и другие меры.
  7. Аппаратное обеспечение: знание аппаратных особенностей мобильных устройств и встраиваемых систем, таких как сенсоры, акселерометры, гироскопы, GPS и другие, а также умение работать с ними через соответствующие API.
  8. Тестирование и отладка: навыки тестирования и отладки мобильных приложений и встраиваемых систем, включая использование инструментов для автоматизации тестирования и отслеживания ошибок.
  9. UX/UI дизайн: понимание принципов дизайна пользовательского интерфейса и оптимизации пользовательского опыта, чтобы создать удобные и интуитивно понятные приложения и системы.
  10. Облачные вычисления: знание облачных платформ, таких как Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure и других, для хранения данных, масштабирования и развертывания приложений и систем.

Тоже хороший план. Но хотелось бы больше конкретики. Поэтому спрошу ChatGPT вот ещё о чём: "Какое сочетание технологий, платформ и устройств позволяет обойтись минимальным количеством языков программирования при изучении этих тем? Желательно одним, например Python, Java или C".

FISUON BRAIN: ИИ за работой - байты крутятся, тексты мутятся
FISUON BRAIN: ИИ за работой - байты крутятся, тексты мутятся
И вот его ответ: "При изучении мобильной разработки, Интернета вещей и встраиваемых систем можно использовать комбинацию следующих технологий, платформ и устройств, чтобы обойтись минимальным количеством языков программирования:"
  1. Язык программирования Python:
    - Мобильная разработка: можно использовать фреймворк Kivy для создания кросс-платформенных мобильных приложений.
    - Интернет вещей: можно использовать библиотеки и фреймворки, такие как MicroPython или CircuitPython, для программирования микроконтроллеров и устройств IoT.
    - Встраиваемые системы: Python может быть использован для разработки программного обеспечения на встраиваемых платформах, таких как Raspberry Pi или BeagleBone.
  2. Язык программирования Java:
    - Мобильная разработка: можно использовать платформу Android для создания приложений для устройств на базе Android.
    - Интернет вещей: Java может быть использован для программирования устройств IoT, таких как Arduino или ESP8266, с использованием библиотек, таких как Eclipse IoT.
    - Встраиваемые системы: Java может быть использован для разработки программного обеспечения на встраиваемых платформах, таких как Raspberry Pi или BeagleBone.
  3. Язык программирования C:
    - Мобильная разработка: можно использовать фреймворк React Native, который позволяет разрабатывать кросс-платформенные мобильные приложения на базе JavaScript, но также позволяет встраивать компоненты на C/C++.
    - Интернет вещей: C является одним из наиболее распространенных языков программирования для программирования микроконтроллеров и устройств IoT.
    - Встраиваемые системы: C является основным языком программирования для разработки программного обеспечения на встраиваемых платформах.
FUSION BRAIN: Искусственный интеллект в деле
FUSION BRAIN: Искусственный интеллект в деле

Что ж, я доволен результатом всех трёх протестированных моделей. Если и при детальном погружении всё будет подобным образом, то появление таких технологий ИИ делает процесс обучения чему-либо как никогда доступным и увлекательным. Затея освоить этот впечатляющий пласт знаний за полгода начинает обретать очертания.