Опубликовано

Вышла книга: Искусственный интеллект с LangChain. Разработка ИИ-агентов на Python

Искусственный интеллект с LangChain. Разработка ИИ-агентов на Python

Книга представляет собой практическое руководство по интеграции искусственного интеллекта в процесс разработки на Python. Рассматривается применение ИИ-ассистентов, включая ChatGPT и аналогичные языковые модели, для повышения эффективности на всех этапах жизненного цикла ПО: от сбора требований и проектирования до написания кода, тестирования, развертывания и мониторинга. На примере сквозного проекта (USB T-Shirt Launcher) и реальных сценариев шаг за шагом показано, как использовать ИИ для автоматизации рутинных задач, генерации чистого и безопасного кода, рефакторинга по принципам SOLID, написания тестов, настройки CI/CD и развертывания в облаке. Изложенная методология универсальна и позволяет применять описанные принципы с любым доступным ИИ-инструментом, превращая его в эффективного помощника для ускорения разработки и повышения качества кода.

ИИ-агент — это программа, которая не просто рассуждает, а сама выполняет действия: ищет информацию в Интернете или локальных файлах, сохраняет данные и многое другое.

Разработка таких агентов — самое перспективное направление в программировании сегодня. А главный инструмент для их создания — библиотека LangChain.

Хотите научиться писать ИИ-агентов на Python с помощью LangChain и построить карьеру в IT? Эта книга для вас.

На трёх простых примерах вы быстро и легко освоите основы ИИ-программирования, научитесь создавать агентов, подключать любые языковые модели, доступные в России, работать с сообщениями, разрабатывать собственные инструменты.

Вы узнаете о продвинутых темах: посредники, управление состоянием и контекстом, прерывания, RAG-агенты, мультиагентные системы, протокол MCP, мультимодальные сообщения. А также реализуете агентов в виде Telegram-ботов, веб-приложений и графических интерфейсов.

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

 

 

Дронов Владимир Александрович

Дронов Владимир Александрович, профессиональный программист, писатель и журналист, работает с компьютерами с 1987 года. Автор более 30 популярных компьютерных книг, в том числе «Django 2.1. Практика создания веб-сайтов на Python», “HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера“, «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», “Laravel. Быстрая разработка современных динамических Web-сайтов на PHP, MySQL, HTML и CSS“, “Angular 4. Быстрая разработка сверхдинамических Web-сайтов на TypeScript и PHP” и книг по продуктам Adobe Flash и Adobe Dreamweaver различных версий. Его статьи публикуются в журналах “Мир ПК” и “ИнтерФейс” (Израиль) и интернет-порталах “IZ City” и “TheVista.ru”.

Книгу “Искусственный интеллект с LangChain. Разработка ИИ-агентов на Python” можно купить в нашем интенет-магазине.

Предисловие 13
ИИ-клиенты и ИИ-агенты. Преимущества ИИ-агентов 13
Почему LangChain? 14
Использованные программные продукты 15
Типографские соглашения 16
ЧАСТЬ I. ВВОДНЫЙ КУРС 19
Глава 1. ИИ-клиент и простой ИИ-агент 21
1.1. Выбор большой языковой модели. GigaChat 21
1.2. Регистрация в личном кабинете GigaChat API и получение ключа авторизации 21
1.3. ИИ-клиент 22
1.3.1. Установка необходимых библиотек 23
1.3.2. Написание ИИ-клиента 23
1.4. Простой ИИ-агент 25
1.4.1. Простой ИИ-агент: создание агента LangChain 25
1.4.2. Простой ИИ-агент: работа с сообщениями 26
1.4.3. Простой ИИ-агент: инструмент 27
1.4.4. Простой ИИ-агент: вводная (системный промпт) 29
1.4.5. Простой ИИ-агент: история сообщений, состояние агента и хранилище состояния 31
1.5. Что еще нужно знать о больших языковых моделях, библиотеке LangChain
и не только? 32
Глава 2. Более сложный ИИ-агент 34
2.1. Более сложный ИИ-агент: начало разработки 34
2.2. Более сложный ИИ-агент: база данных пицц 36
2.3. Более сложный ИИ-агент: инструменты 37
2.3.1. Инструменты, часть 1 37
2.3.2. Инструменты, часть 2 38
2.3.3. Инструменты, часть 3 39
2.4. Более сложный ИИ-агент: вводная 42
2.5. Более сложный ИИ-агент: очистка истории. Посредники 44
2.6. Что еще нужно знать о посредниках, очистке истории и не только? 46
ЧАСТЬ II. БИБЛИОТЕКА LANGCHAIN: ОСНОВНЫЕ ВОЗМОЖНОСТИ 49
Глава 3. Установка библиотеки LangChain. Агенты LangChain 51
3.1. Понятие и назначение агента LangChain 51
3.2. Создание агента LangChain 51
3.3. Задание вводной у агента 53
3.4. Работа агента LangChain 54
3.5. Понятия состояния, общего хранилища и контекста агента LangChain 54
Глава 4. Соединение с языковой моделью 56
4.1. Создание соединения с языковой моделью 56
4.1.1. Использование функции init_chat_model() 56
4.1.1.1. Остальные параметры соединения 58
4.1.2. Использование классов соединений 59
4.2. Поддерживаемые языковые модели и соединение с ними 60
4.2.1. Облачные языковые модели 60
4.2.1.1. «Сбер» GigaChat 60
4.2.1.2. Google Gemini 62
4.2.1.3. YandexGPT 63
4.2.1.4. DeepSeek 65
4.2.2. HuggingFace 66
4.2.3. Ollama 68
Глава 5. Сообщения 70
5.1. Классы сообщений 70
5.1.1. BaseMessage 70
5.1.2. AIMessage 71
5.1.3. ToolMessage 72
5.1.4. Примеры сообщений разных разновидностей 72
5.2. Отправка вопросов и получение ответов: обычный режим 73
5.2.1. Отправка вопроса и получение ответа целиком: обычный режим 74
5.2.1.1. Отправка вопроса с указанием выдать ответ целиком: обычный режим 74
5.2.1.2. Получение ответа целиком: обычный режим 75
5.2.2. Отправка вопроса и получение ответа чанками: обычный режим 76
5.3. Отправка вопросов и получение ответов: конкурентный режим 78
5.4. Отладочный вывод сообщений 79
5.5. Что еще нужно знать о сообщениях? 82
Глава 6. Структурированный вывод 83
6.1. Объявление структуры вывода 83
6.1.1. Типизированные словари 83
6.1.2. Датаклассы 86
6.1.3. Модели Pydantic 86
6.2. Задание структуры вывода 88
6.3. Получение структурированного вывода 88
6.4. Обработка ошибок структурирования вывода 89
6.5. Программа для обработки почтовых адресов 91
6.5.1. Обработчик почтовых адресов: соединение с моделью, вводная и структура адреса 91
6.5.2. Обработчик почтовых адресов: агент и стартовый модуль 92
6.6. Мультиструктурный вывод 95
6.7. Структурированный вывод и языковые модели GigaChat 96
6.8. Что еще нужно знать о структурированном выводе? 97
Глава 7. Инструменты, часть 1 99
7.1. Объявление инструментов 99
7.1.1. Объявление инструментов-функций 99
7.1.2. Объявление инструментов-классов 102
7.2. Указание инструментов при создании агента 103
Глава 8. Инструменты, часть 2 105
8.1. Поиск в Интернете 105
8.1.1. DuckDuckGo 105
8.1.1.1. DuckDuckGo: базовый вывод 106
8.1.1.2. DuckDuckGo: расширенный вывод 106
8.1.1.3. DuckDuckGo: настройки поиска 107
8.1.2. Tavily Search 108
8.2. Поиск на отдельных веб-сайтах 110
8.2.1. Википедия 110
8.2.2. Wikidata 111
8.2.3. Google Books 112
8.3. Работа с базами данных 113
8.3.1. Создание пула соединений с базой данных 114
8.3.2. Создание объекта самой базы данных 115
8.3.3. Создание набора инструментов для работы с базой данных 116
8.3.4. Указание инструментов при создании агента 117
8.3.5. ИИ-программа телефонного справочника 118
8.3.5.1. ИИ-телефонный справочник: соединение с языковой моделью и вводная 118
8.3.5.2. ИИ-телефонный справочник: инструменты для работы
с базой данных 119
8.3.5.3. ИИ-телефонный справочник: агент и остальные модули 119
8.4. Работа с локальными файлами 121
8.4.1. Создание набора инструментов для работы с локальными файлами 121
8.4.2. ИИ-программа для создания заготовок программного кода 122
8.5. Что еще нужно знать об инструментах? 123
Глава 9. Работа с историей сообщений 124
9.1. Доступ к истории сообщений 124
9.1.1. Доступ к истории сообщений в инструментах 124
9.1.2. Доступ к истории сообщений в посредниках 125
9.2. Работа с историей сообщений 126
9.3. Внесение изменений в историю сообщений 127
9.4. Очистка истории сообщений 128
9.4.1. Непосредственное удаление сообщений 128
9.4.2. Обрезка истории 129
9.4.2.1. Обрезка истории: делаем сами 129
9.4.2.2. Обрезка истории: используем функцию trim_messages() 129
9.4.3. Удаление результатов вызова инструментов 131
9.4.4. Подведение итогов 132
ЧАСТЬ III. БИБЛИОТЕКА LANGCHAIN:
РАСШИРЕННЫЕ ВОЗМОЖНОСТИ 135
Глава 10. Посредники, часть 1 137
10.1. Посредники однократного вызова 137
10.1.1. Объявление посредников однократного вызова 137
10.1.2. Результаты, возвращаемые посредниками однократного вызова 139
10.1.2.1. None — не делать ничего 139
10.1.2.2. Сообщения — добавить их в историю 140
10.1.2.3. Команда перехода 140
10.2. Посредники двукратного вызова 141
10.2.1. Объявление посредников двукратного вызова 141
10.2.2. Работа посредников двукратного вызова 143
10.2.3. Классы запроса к языковой модели, вызова инструмента и результата, выданного языковой моделью 143
10.2.3.1. Класс ModelRequest: обращение к языковой модели 143
10.2.3.2. Класс ToolCallRequest: обращение к инструменту 145
10.2.3.3. Класс ModelResponse: результат обращения к языковой модели 145
10.2.4. Результаты, возвращаемые посредниками двукратного вызова 146
10.2.4.1. Изначальный результат обращения к языковой модели
или вызова инструмента 146
10.2.4.2. Результат, сгенерированный посредником 147
10.3. Посредники, создающие вводные 149
10.4. Посредники-классы 150
10.5. Указание посредников при создании агента 152
10.6. Последовательность выполнения посредников 152
Глава 11. Посредники, часть 2 154
11.1. LLMToolSelectorMiddleware: выбор используемых инструментов 154
11.2. ModelCallLimitMiddleware: ограничение количества обращений
к языковой модели 155
11.3. ToolCallLimitMiddleware: ограничение количества вызовов инструмента 156
11.4. ShellToolMiddleware: выполнение команд системной консоли 157
11.5. FilesystemFileSearchMiddleware: поиск файлов 160
11.6. TodoListMiddleware: список запланированных дел 161
11.7. LLMToolEmulator: имитация вызовов инструментов 163
Глава 12. Состояние, контекст агента и общее хранилище 164
12.1. Состояние агента 164
12.1.1. Задание структуры состояния агента 164
12.1.2. Чтение данных из состояния агента 165
12.1.3. Запись данных в состояние агента 166
12.2. Контекст агента 168
12.2.1. Задание структуры контекста агента 168
12.2.2. Указание контекста агента 168
12.2.3. Чтение данных из контекста агента 168
12.3. Общее хранилище 170
12.3.1. Указание общего хранилища 170
12.3.2. Структура общего хранилища 170
12.3.3. Работа с общим хранилищем 171
12.3.3.1. Запись документов 171
12.3.3.2. Чтение документов 171
12.3.3.3. Поиск документов 172
12.3.3.4. Перечисление пространств имен 173
12.3.3.5. Удаление документов 174
12.3.4. Доступ к общему хранилищу 174
Глава 13. Хранилища 177
13.1. Хранилища состояния 177
13.1.1. InMemorySaver: оперативная память 177
13.1.2. SqliteSaver: база данных SQLite 178
13.1.3. MongoDBSaver: база данных MongoDB 179
13.1.4. PostgresSaver: база данных PostgreSQL 180
13.1.5. PyMySQLSaver: база данных MySQL 181
13.2. Общие хранилища 182
13.2.1. InMemoryStore: оперативная память 182
13.2.2. SqliteStore: база данных SQLite 182
13.2.3. MongoDBStore: база данных MongoDB 182
13.2.4. PostgresStore: база данных PostgreSQL 183
13.2.5. PyMySQLStore: база данных MySQL 184
13.3. Что еще нужно знать о хранилищах? 184
Глава 14. Прерывания и преграды 185
14.1. Прерывания 185
14.1.1. HumanInTheLoopMiddleware: встроенный посредник,
выполняющий прерывания 185
14.1.1.1. HumanInTheLoopMiddleware: создание объекта посредника 185
14.1.1.2. HumanInTheLoopMiddleware: реагирование на прерывания 188
14.1.1.2.1. HumanInTheLoopMiddleware: реагирование на прерывания при выдаче ответа целиком 188
14.1.1.2.2. HumanInTheLoopMiddleware: реагирование на прерывания при выдаче ответа чанками 192
14.1.2. Самостоятельное выполнение прерываний и реагирование на них 192
14.1.2.1. Самостоятельное выполнение прерываний 192
14.1.2.2. Реагирование на самостоятельно выполненное прерывание 193
14.2. Преграды 194
14.2.1. Встроенные преграды 194
14.2.1.1. PIIMiddleware: выявление и блокирование конфиденциальных данных 194
14.2.1.2. ShellToolMiddleware: выполнение команд системной консоли — функциональность преграды 196
14.2.2. Написание своих преград 197
Глава 15. Обработка ошибок 199
15.1. Обработка ошибок в инструментах 199
15.1.1. Самостоятельная обработка ошибок 199
15.1.1.1. Обработка ошибок в конкретном инструменте 199

15.1.1.2. Обработка критических ошибок 200
15.1.1.3. Централизованная обработка ошибок в посреднике 200
15.1.2. ToolRetryMiddleware: повторный вызов инструмента в случае ошибки 201
15.2. Обработка ошибок в посредниках 203
15.3. Обработка ошибок в агентах 203
15.4. ModelFallbackMiddleware: переключение на запасную языковую модель 204
Глава 16. Разработка RAG-агентов, часть 1 205
16.1. Первый RAG-агент, использующий программно сформированные документы 205
16.1.1. Первый RAG-агент: документы, содержащие рецепты пицц 206
16.1.2. Первый RAG-агент: сплиттер, эмбеддинг и векторное хранилище 207
16.1.3. Первый RAG-агент: ретривер 208
16.1.4. Первый RAG-агент: вводная и всякие мелочи 210
16.2. Второй RAG-агент, загружающий документ из PDF-файла 211
16.3. Документы LangChain 212
16.3.1. Программное формирование документов 212
16.3.2. Загрузка документов из сторонних файлов. Загрузчики 213
16.3.2.1. Методы загрузчиков, предназначенные для создания документов 213
16.3.2.2. PyPDFLoader: один PDF-файл 214
16.3.2.3. PyPDFDirectoryLoader: все PDF-файлы в указанной папке 214
16.3.2.4. WebBaseLoader: отдельные веб-страницы 215
16.3.2.5. RecursiveUrlLoader: заданная веб-страница и все веб-страницы, на которые она ссылается 216
16.4. Сплиттеры 218
16.4.1. RecursiveCharacterTextSplitter: разбиение с сохранением структуры текста 218
16.4.2. CharacterTextSplitter: быстрое разбиение текста 219
16.4.3. Сплиттеры веб-страниц 220
16.4.3.1. HTMLHeaderTextSplitter: быстрое разбиение по заголовкам 220
16.4.3.2. HTMLSectionSplitter: разбиение по заголовкам на чанки ограниченного размера 221
16.4.3.3. HTMLSemanticPreservingSplitter: разбиение с сохранением структуры содержимого веб-страниц 222
16.5. Что еще нужно знать о разработке RAG-агентов, описанных в этой части темы? 223
Глава 17. Разработка RAG-агентов, часть 2 225
17.1. Эмбеддинги 225
17.1.1. «Сбер» GigaChat Embeddings 225
17.1.2. Google Gemini Embeddings 226
17.1.3. YandexGPT Embeddings 226
17.1.4. Эмбеддинги, доступные на HuggingFace 226
17.1.5. Эмбеддинги, работающие под управлением Ollama 227
17.2. Векторные хранилища 228
17.3.1. Создание векторного хранилища 228
17.3.1.1. InMemoryVectorStore: оперативная память 229
17.3.1.2. Chroma: оперативная память или локальный диск 230
17.3.1.3. PGVector: база данных PostgreSQL 231
17.3.2. Работа с векторным хранилищем 232
17.3. Ретриверы 234
17.4. Инструменты для поиска в векторном хранилище 234
17.5. Что еще нужно знать о разработке RAG-агентов, описанных в этой части темы? 235
Глава 18. Мультиагентные ИИ-программы 236
18.1. Принципы разработки мультиагентных ИИ-программ 236
18.2. Пример: ИИ-программа для работы с файлами и базой данных 237
Глава 19. Глубинные агенты LangChain 241
19.1. ИИ-программа исследователя рынка, основанная на глубинном агенте 242
19.2. Возможности глубинных агентов 244
19.3. Создание глубинных агентов 245
19.4. Описание подчиненных агентов 246
19.4.1. Описание подчиненных агентов в виде словарей 246
19.4.2. Описание подчиненных агентов в виде объектов 247
19.5. Файловые системы глубинных агентов 248
19.5.1. StateBackend: виртуальная, в хранилище состояния 249
19.5.2. StoreBackend: виртуальная, в общем хранилище 250
19.5.3. FilesystemBackend: физическая, в папке с заданным путем 250
19.5.4. CompositeBackend: гибридная 251
19.6. Хранение информации в файлах 252
19.6.1. Заметки для глубинного агента 252
19.6.2. Навыки глубинного агента 254
19.6.3. Сохранение произвольных данных 256
19.7. Прерывания в глубинных агентах 257
Глава 20. Протокол MCP. Доступ к удаленным инструментам 258
20.1. Базовые средства для разработки инструмент-серверов и инструмент-клиентов. MCP-серверы и MCP-клиенты 258
20.1.1. Написание инструмент-серверов 258
20.1.1.1. Создание MCP-сервера 259
20.1.1.2. Создание инструментов 260
20.1.1.3. Активизация MCP-сервера 261
20.1.1.4. Запуск инструмент-сервера 262
20.1.2. Написание инструмент-клиентов 263
20.1.2.1. Создание MCP-клиента 263
20.1.2.2. Получение списка инструментов, предоставляемых
инструмент-серверами 265
20.1.2.3. Особенности работы с агентом в случае использования
удаленных инструментов 265
20.2. Расширенные средства для разработки инструмент-серверов
и инструмент-клиентов 266
20.2.1. Ресурсы 266
20.2.1.1. Создание ресурсов в программе инструмент-сервера 266
20.2.1.2. Загрузка ресурсов в программе инструмент-клиента 267
20.2.2. Перехватчики вызовов 269
20.2.2.1. Объявление перехватчиков вызовов 269
20.2.2.2. Класс MCPToolCallRequest: обращение к удаленному
инструменту 270
20.2.2.3. Результаты, возвращаемые перехватчиками вызовов 272
20.2.2.4. Указание перехватчиков вызовов при создании MCP-клиента 273
20.2.2.5. Последовательность выполнения перехватчиков вызовов 273
20.2.3. Доступ к HTTP-заголовкам в теле инструментов 273
20.2.4. Контекст MCP-сервера и функции обратного вызова MCP-клиента 274
20.2.4.1. Пересылка текстовых сообщений 274
20.2.4.2. Индикация хода процесса 276
20.2.4.3. Запрос у пользователя подтверждения на выполнение операции 278
Глава 21. Мультимодальные сообщения 282
21.1. Работа с мультимодальными сообщениями средствами LangChain 282
21.1.1. Отправка в мультимодальных вопросах содержимого файлов 284
21.2. Мультимодальные сообщения и языковые модели GigaChat 285
21.2.1. Создание мультимодальных вопросов 285
21.2.2. Обработка мультимодальных ответов 287
ЧАСТЬ IV. ОФОРМЛЕНИЕ ИИ-АГЕНТОВ 291
Глава 22. Оформление ИИ-агентов в виде Telegram-ботов 293
22.1. Получение бот-жетона 293
22.2. Простой Telegram-бот: ИИ-приемщик заказов 295
22.2.1. Простой Telegram-приемщик заказов: обработка сообщений 295
22.2.2. Простой Telegram-приемщик заказов: собственно бот 296
22.2.3. Простой Telegram-приемщик заказов: остальной код 299
22.3. Создание Telegram-приложения 300
22.4. Запуск Telegram-приложения 301
22.5. Обработка обновлений разных видов 301
22.5.1. Обработка поступающих команд 301
22.5.1.1. Объявление обработчиков команд 302
22.5.1.2. Update: класс сведений о последнем обновлении 302
22.5.1.3. Message: класс сообщения 303
22.5.1.4. Класс контекста обработчика 304
22.5.1.5. User: класс пользователя Telegram 305
22.5.1.6. Оформление обработчиков команд 306
22.5.1.7. Указание обработчиков у Telegram-приложения 307
22.5.2. Обработка поступающих сообщений 307
22.6. Дополнительные средства для разработки Telegram-ботов 308
22.6.1. Использование экранной клавиатуры 308
22.6.1.1. Создание и вывод экранной клавиатуры 308
22.6.1.2. Реагирование на нажатия кнопок экранной клавиатуры 309
22.6.2. Отправка пользователю изображений 311
22.6.3. Отправка пользователю видео 314
22.7. Что еще нужно знать о разработке Telegram-ботов? 315
Глава 23. Оформление ИИ-агентов в виде веб-приложений 316
23.1. Веб-ИИ-агент, версия 0.1 316
23.1.1. Веб-ИИ-агент, версия 0.1: обработка сообщений 317
23.1.2. Веб-ИИ-агент, версия 0.1: веб-интерфейс 317
23.1.3. Веб-ИИ-агент, версия 0.1: запуск и тестирование 319
23.1.4. Веб-ИИ-агент, версия 0.1: фронтенд 323
23.2. Создание приложения FastAPI 327
23.3. Объявление контроллеров 328
23.3.1. Генерирование и выдача серверных ответов 328
23.3.2. Получение данных от пользователя 329
23.3.2.1. Данные в формате JSON 329
23.3.2.2. Данные в формате Form Data 330
23.3.2.3. GET-параметры 330
23.3.2.4. URL-параметры 331
23.3.2.5. Данные из cookie 331
23.3.3. Создание cookie 332
23.4. Создание маршрутов 332
23.5. Веб-ИИ-агент, версия 1.0 333
23.6. Поддержка протокола Websockets 335
23.6.1. Объявление Websockets-контроллеров 335
23.6.2. WebSocket: класс соединения Websockets 336
23.6.3. Обработка разрыва соединения клиентом 337
23.6.4. Создание Websockets-маршрутов 338
23.7. Веб-ИИ-агент: версия 2.0 338
23.7.1. Веб-ИИ-агент, версия 2.0: бэкенд 338
23.7.1.1. Веб-ИИ-агент, версия 2.0: обработка сообщений 338
23.7.1.2. Веб-ИИ-агент, версия 2.0: веб-приложение 339
23.7.2. Веб-ИИ-агент, версия 2.0: фронтенд 341
23.8. Веб-ИИ-агент, версия 2.1: очистка истории сообщений после разрыва соединения 343
23.9. Что еще нужно знать о разработке веб-ИИ-приложений? 344
Глава 24. Оформление ИИ-агентов в виде графических приложений 346
24.1. Графический ИИ-агент, версия 1.0 346
24.1.1. Графический ИИ-агент, версия 1.0: разработка 346
24.1.2. Графический ИИ-агент, версия 1.0: запуск 349
24.2. Оконные элементы 350
24.2.1. Базовые классы оконных элементов 350
24.2.2. Элементы управления 353
24.2.2.1. Надпись 353
24.2.2.2. Поле ввода 354
24.2.2.3. Флажок 355
24.2.2.4. Группа переключателей 355
24.2.2.5. Раскрывающийся список 356
24.2.2.6. Кнопка 359
24.2.3. Дополнительные оконные элементы 359
24.2.3.1. Графический элемент 359
24.2.3.2. Текст в формате Markdown 360
24.2.4. Контейнеры 361
24.2.4.1. Базовый класс контейнеров 361
24.2.4.2. Колонка 362
24.2.4.3. Строка 363
24.2.4.4. Прокручивающийся перечень 364
24.2.4.5. Сетка 364
24.3. Графический ИИ-агент, версия 1.1 365
24.4. Обработка событий 367
24.5. Вывод оконных элементов в окне 368
24.6. Дополнительные программные инструменты 368
24.6.1. Работа с клиентской областью окна 368
24.6.2. Управление окном 369
24.6.3. Вывод стандартных файловых диалоговых окон 371
24.7. Что еще нужно знать о разработке графических приложений? 373
Заключение 374
Приложение. Описание файлового архива 376
Предметный указатель 377

Опубликовано

Встречайте: “Прикладные API для искусственного интеллекта и Data Science”

Прикладные API для искусственного интеллекта и Data Science

Книга рассказывает о проектировании API для обработки данных и взаимодействия с большими языковыми моделями. Рассматривается работа с языком Python и его фреймворками FastAPI, Streamlit и LangChain. Рассматривается интеграция API в имеющиеся рабочие процессы, типичные для обработки данных, вывод приложения в облако, подбор интерфейсов для обслуживания различных задач, применение больших языковых моделей класса GPT для оптимизации и ускорения проектирования API.

 

Для специалистов по проектированию API, науке о данных и машинному обучению

Навыки создания API незаменимы при работе с искусственным интеллектом и в науке о данных (Data Science). Умение проектировать и поддерживать API для искусственного интеллекта понадобится как новичкам, так и опытным профессионалам. Эта практическая книга поможет вам на собственном опыте освоить разработку и поддержку API на Python с применением популярных фреймворков этого языка —  FastAPI, LangChain и Streamlit .

Книга делится на три части и рассказывает, как разрабатывать API с нуля, интегрировать их в рабочие процессы, типичные для обработки данных, научиться использовать такие инструменты как ChatGPT и LangChain, чтобы взаимодействовать с API при помощи больших языковых моделей (LLM). Проработав книгу, вы приобретете портфолио готовых проектов с качественными API, которые в самом выгодном свете продемонстрируют ваше мастерство в работе с ИИ, машинным обучением и наукой о данных.

  • Научитесь проектировать API для различных приложений из области data science
  • Откройте для себя, как собирать и развертывать API при помощи Python и FastAPI
  • Изучите, как интегрировать API в рабочие процессы, связанные с обработкой данных, применять API для доступа к данным и их визуализации
  • Тренируйте модели машинного обучения, а затем развертывайте их в виде API
  • Освойте эффективное взаимодействие с API при помощи искусственного интеллекта и больших языковых моделей

Эта книга — потрясающая новинка для всего сообщества исследователей данных. Порадуйте себя — добавьте эту книгу в свою профессиональную библиотеку, чтобы расти, совершенствоваться и становиться всё более эффективным специалистом по data science!

 

Алекс Гутман, автор книги «Becoming a Data Head: How to Think, Speak, and Understand Data Science, Statistics, and Machine Learning»

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

 

Джеймс Гоф, заслуженный инженер в компании Morgan Stanley, автор книги «Проектирование архитектуры API»

 

rayan day

Райан Дэй — высокопрофессиональный исследователь данных, работающий в компании CSBS и участвующий в разработке свободного ПО. Один из разработчиков фреймворка FastAPI, обладает опытом облачных вычислений и разработки API в государственном секторе.

Книгу “Прикладные API для искусственного интеллекта и Data Science” можно купить в нашем интенет-магазине.

Отзывы о книге……………………………………………………………………………………… 15

Предисловие…………………………………………………………………………………………… 17

Зачем вам читать эту книгу?…………………………………………………………………………………………………….. 17

Для кого эта книга……………………………………………………………………………………………………………………… 17

Для специалистов по работе с данными………………………………………………………………………. 17

Для разработчиков и проектировщиков API………………………………………………………………… 18

Для ищущих работу и желающих сменить свою роль………………………………………………… 18

Создание портфолио-проектов…………………………………………………………………………………………………. 18

Как пользоваться данной книгой……………………………………………………………………………………………… 19

Чем не является данная книга…………………………………………………………………………………………………… 19

Почему именно фэнтези-футбол?……………………………………………………………………………………………… 20

Получение дополнительных советов по API, искусственному интеллекту и науке о работе с данными          20

Соглашения, принятые в данной книге……………………………………………………………………………………. 21

Использование примеров кода…………………………………………………………………………………………………. 21

Платформа онлайн-обучения O’Reilly……………………………………………………………………………………… 22

Контактная информация…………………………………………………………………………………………………………… 22

Благодарности…………………………………………………………………………………………………………………………… 23

Часть I. Разработка API для задач Data Science…………………… 25

Глава 1. Создание API, которые понравятся специалистам по обработке данных            27

Для чего специалисты по обработке данных используют API-интерфейсы?………………………. 27

Какие инструменты используют специалисты по обработке данных?………………………………… 28

Проектирование API для специалистов по обработке данных……………………………………………… 29

Предоставление первой части вашего портфолио-проекта…………………………………………………… 30

У каждого API есть своя история……………………………………………………………………………………………… 31

Знакомьтесь с вашей компанией: SportsWorldCentral…………………………………………………. 31

SWC нуждается в API…………………………………………………………………………………………………….. 33

Выбор первых API-продуктов………………………………………………………………………………………………….. 34

Выявление потенциальных пользователей………………………………………………………………….. 34

Создание пользовательских историй……………………………………………………………………………. 36

Дополнительные источники информации……………………………………………………………………………….. 37

Резюме…………………………………………………………………………………………………………………………………………. 37

Глава 2. Выбор архитектуры, подходящей для API………………………………… 39

Архитектурные стили API…………………………………………………………………………………………………………. 39

Обмен репрезентациями ресурсов (Representational State Transfer, REST)……………….. 40

Язык графических запросов Graph Query Language (GraphQL)………………………………….. 40

gRPC…………………………………………………………………………………………………………………………………. 41

Ваш выбор: REST…………………………………………………………………………………………………………… 41

Технологическая архитектура…………………………………………………………………………………………………. 43

Программные средства, используемые в данной главе………………………………………………………….. 45

Python………………………………………………………………………………………………………………………………. 45

GitHub………………………………………………………………………………………………………………………………. 45

Начало работы с GitHub Codespace………………………………………………………………………………………… 46

Создание учетной записи в GitHub……………………………………………………………………………….. 46

Клонирование репозитория части первой……………………………………………………………………. 46

Запуск вашей среды GitHub Codespace………………………………………………………………………… 47

Знакомство с новым кодовым пространством……………………………………………………………… 47

Совершение вашего первого коммита………………………………………………………………………….. 49

Дополнительные источники информации……………………………………………………………………………….. 52

Резюме…………………………………………………………………………………………………………………………………………. 52

Глава 3. Создание базы данных…………………………………………………………….. 53

Компоненты API………………………………………………………………………………………………………………………… 53

Программные средства, используемые в данной главе………………………………………………………….. 54

SQLite……………………………………………………………………………………………………………………………….. 54

SQLAlchemy…………………………………………………………………………………………………………………….. 54

pytest………………………………………………………………………………………………………………………………… 55

Создание базы данных SQLite………………………………………………………………………………………………….. 55

Создание таблиц базы данных……………………………………………………………………………………… 56

Принципы формирования таблиц…………………………………………………………………………………. 58

Загрузка данных…………………………………………………………………………………………………………….. 59

Доступ к данным из Python……………………………………………………………………………………………………….. 61

Установка SQLAlchemy в вашу среду………………………………………………………………………….. 61

Создание Python-файлов для доступа к базе данных…………………………………………………. 62

Создание файла конфигурации базы данных……………………………………………………………… 67

Создание вспомогательных функций SQLAlchemy…………………………………………………….. 68

Установка pytest в вашу среду………………………………………………………………………………………. 72

Тестирование нашего кода SQLAchemy………………………………………………………………………. 73

Дополнительные источники информации……………………………………………………………………………….. 76

Резюме…………………………………………………………………………………………………………………………………………. 76

Глава 4. Разработка кода FastAPI………………………………………………………….. 79

Продолжение разработки портфолио-проекта……………………………………………………………………….. 79

Программные средства, используемые в данной главе………………………………………………………….. 80

FastAPI…………………………………………………………………………………………………………………………….. 80

HTTPX……………………………………………………………………………………………………………………………… 81

Pydantic……………………………………………………………………………………………………………………………. 81

Uvicorn……………………………………………………………………………………………………………………………… 82

Копирование файлов из каталога третьей главы……………………………………………………………………. 82

Установка в кодовое пространство новых библиотек……………………………………………………………. 82

Создание файлов на языке Python для нашего API………………………………………………………………… 83

Создание Pydantic-схем…………………………………………………………………………………………………. 83

Создание контроллера FastAPI…………………………………………………………………………………….. 87

Тестирование API………………………………………………………………………………………………………………………. 94

Запуск API………………………………………………………………………………………………………………………………….. 97

Дополнительные источники информации……………………………………………………………………………….. 99

Резюме………………………………………………………………………………………………………………………………………. 100

Глава 5. Документирование API…………………………………………………………… 101

Документация как сигнал доверия…………………………………………………………………………………………. 101

Создание высококачественной API-документации………………………………………………………………. 102

Основные функции……………………………………………………………………………………………………….. 102

Дополнительные функции……………………………………………………………………………………………. 103

Просмотр примеров документации по API……………………………………………………………………………. 104

Приложение Sleeper………………………………………………………………………………………………………. 104

MyFantasyLeague…………………………………………………………………………………………………………. 105

Yahoo! Фэнтези-футбол……………………………………………………………………………………………….. 105

Просмотр встроенной документации вашего API………………………………………………………………… 107

Копирование файлов из каталога четвертой главы………………………………………………….. 107

Вариант документации 1: Swagger UI………………………………………………………………………… 108

Вариант документации 2: Redoc………………………………………………………………………………… 113

Работа с файлом спецификации OpenAPI……………………………………………………………………………… 114

Продолжение разработки портфолио-проекта…………………………………………………………………….. 117

Добавление сведений к OAS-объекту info………………………………………………………………….. 118

Добавление тегов для классификации путей……………………………………………………………… 119

Добавление дополнительных сведений к конкретным конечным точкам………………. 120

Добавление описаний параметров……………………………………………………………………………… 121

Просмотр изменений в Swagger UI………………………………………………………………………………. 121

Регрессионное тестирование API………………………………………………………………………………… 123

Обновление файла README.md……………………………………………………………………………………………. 123

Дополнительные источники информации……………………………………………………………………………… 125

Резюме………………………………………………………………………………………………………………………………………. 126

Глава 6. Развертывание API в облаке…………………………………………………… 127

Преимущества и обязательства при развертывании API в облаке……………………………………… 127

Преимущества………………………………………………………………………………………………………………. 127

Обязательства……………………………………………………………………………………………………………….. 128

Выбор облачного хостинга для вашего проекта………………………………………………………………….. 129

Настройка каталога проекта………………………………………………………………………………………………….. 130

Использование GitHub Codespaces в качестве облачного хостинга…………………………………… 130

Развертывание в Render…………………………………………………………………………………………………………… 131

Регистрация на Render…………………………………………………………………………………………………. 132

Создание нового веб-сервиса………………………………………………………………………………………. 132

Автоматическое развертывание изменений в API……………………………………………………… 134

Упаковка приложения в контейнер Docker……………………………………………………………………………. 134

Проверка установки Docker…………………………………………………………………………………………. 135

Создание Dockerfile………………………………………………………………………………………………………. 135

Создание файла .dockerignore……………………………………………………………………………………… 137

Сборка образа контейнера………………………………………………………………………………………….. 137

Локальный запуск образа контейнера……………………………………………………………………….. 138

Развертывание в AWS……………………………………………………………………………………………………………… 139

Создание контейнерного Lightsail-сервиса………………………………………………………………… 139

Установка AWS CLI……………………………………………………………………………………………………… 140

Установка плагина Amazon Lightsail для работы с контейнерными сервисами…….. 140

Настройка параметров входа……………………………………………………………………………………… 140

Отправка нашего образа контейнера в Lightsail………………………………………………………… 141

Создание Lightsail-развертывания………………………………………………………………………………. 142

Обновление API-документации………………………………………………………………………………………………. 144

Дополнительные источники информации……………………………………………………………………………… 145

Резюме………………………………………………………………………………………………………………………………………. 145

Глава 7. Все включено: разработка Python SDK……………………………………. 147

SDK устраняют разрыв……………………………………………………………………………………………………………. 148

Выбор языка программирования для вашего SDK……………………………………………………………….. 151

Начнем с SDK с минимальным функционалом……………………………………………………………………… 152

Совет эксперта: упростите установку SDK……………………………………………………………….. 152

Совет эксперта: придайте SDK последовательность и идиоматичность………………… 153

Создание полнофункционального SDK…………………………………………………………………………………. 156

Совет эксперта: используйте разумные значения по умолчанию…………………………… 156

Совет эксперта: предоставьте полноценную функциональность……………………………. 159

Совет эксперта: ведите журнал событий…………………………………………………………………… 164

Совет эксперта: скрывайте сложности API……………………………………………………………….. 166

Совет эксперта: предоставляйте возможности bulk-загрузок………………………………….. 168

Совет эксперта: документируйте SDK……………………………………………………………………….. 171

Тестирование SDK………………………………………………………………………………………………………… 173

Совет эксперта: поддерживайте все задачи, реализуемые API……………………………….. 177

Завершение первой части нашего портфолио-проекта……………………………………………………….. 178

Дополнительные источники информации……………………………………………………………………………… 180

Резюме………………………………………………………………………………………………………………………………………. 180

Часть II. Использование API в проекте
по анализу данных……………………………………………………………………… 181

Глава 8. Что специалистам по анализу данных нужно знать об API…….. 183

Использование различных стилей API………………………………………………………………………………….. 183

Основы HTTP……………………………………………………………………………………………………………………………. 185

Как использовать API со всей ответственностью…………………………………………………………………. 187

Разделение ответственности: использование SDK или создание собственных клиентов для API        188

Как создаются API…………………………………………………………………………………………………………………… 190

Как тестируются API……………………………………………………………………………………………………………….. 190

Развертывание и контейнеризация API………………………………………………………………………………….. 191

Использование системы контроля версий……………………………………………………………………………… 191

Представление второй части портфолио-проекта……………………………………………………………….. 192

Приступаем к работе с GitHub Codespace…………………………………………………………………………….. 192

Клонирование репозитория части II………………………………………………………………………….. 192

Запуск вашей среды GitHub Codespace……………………………………………………………………… 193

Локальный запуск API SportsWorldCentral (SWC)………………………………………………………………… 194

Дополнительные источники информации……………………………………………………………………………… 196

Резюме………………………………………………………………………………………………………………………………………. 196

Глава 9. Использование API для аналитики данных……………………………. 197

Пользовательские метрики для спортивной аналитики……………………………………………………….. 197

Использование API в качестве источников данных для пользовательских метрик в фэнтези-аналитике          198

Создание пользовательской метрики: оценка Shark League (Лиги акул)…………………………… 199

Программные средства, используемые в данной главе……………………………………………………….. 200

httpx……………………………………………………………………………………………………………………………….. 200

Jupyter Notebooks………………………………………………………………………………………………………….. 201

pandas……………………………………………………………………………………………………………………………. 201

Установка новых библиотек в ваше кодовое пространство………………………………………………… 202

Запуск вашего API в кодовом пространстве…………………………………………………………………………. 202

Создание файла API-клиента…………………………………………………………………………………………………. 202

Создание блокнота Jupyter Notebook…………………………………………………………………………………….. 204

Добавление к блокноту общей конфигурации………………………………………………………………………. 205

Работа с данными вашего API………………………………………………………………………………………………… 207

Вычисление League Balance Score…………………………………………………………………………………………. 209

Вычисление League Juice Score………………………………………………………………………………………………. 211

Создание Shark League Score………………………………………………………………………………………………….. 212

Дополнительные источники информации……………………………………………………………………………… 213

Резюме………………………………………………………………………………………………………………………………………. 213

Глава 10. Использование API в конвейерах данных…………………………….. 215

Типы источников для конвейеров обработки данных………………………………………………………….. 215

Проектирование конвейера данных………………………………………………………………………………………. 216

Оркестрация конвейера данных с помощью Apache Airflow……………………………………………….. 217

Установка Apache Airflow в GitHub Codespaces……………………………………………………………………. 218

Создание локальной аналитической базы данных………………………………………………………………. 222

Запуск API в кодовом пространстве………………………………………………………………………………………. 222

Настройка Airflow-подключений……………………………………………………………………………………………. 222

Создание нашего первого DAG………………………………………………………………………………………………. 223

Создание совместно используемой функции………………………………………………………………………… 226

Запуск DAG………………………………………………………………………………………………………………………………. 228

Резюме………………………………………………………………………………………………………………………………………. 230

Глава 11. Обработка данных в приложениях Streamlit…………………………. 231

Привлечение пользователей с помощью интерактивной визуализации…………………………….. 231

Программные средства, используемые в данной главе……………………………………………………….. 232

nfl_data_py……………………………………………………………………………………………………………………. 232

Streamlit…………………………………………………………………………………………………………………………. 233

Установка Streamlit и nfl_data_py………………………………………………………………………………………….. 233

Запуск вашего API в кодовом пространстве…………………………………………………………………………. 233

Повторное использование файла API-клиента из главы 9…………………………………………………… 234

Создание Streamlit-приложения……………………………………………………………………………………………… 234

Обновление главного файла…………………………………………………………………………………………………… 234

Запуск Streamlit-приложения………………………………………………………………………………………………….. 235

Создание страницы с составами команд………………………………………………………………………………. 236

Создание страницы статистики команды……………………………………………………………………………… 239

Развертывание Streamlit-приложения…………………………………………………………………………………….. 242

Завершение второй части портфолио-проекта…………………………………………………………………….. 243

Дополнительные источники информации……………………………………………………………………………… 244

Резюме………………………………………………………………………………………………………………………………………. 245

Часть III. Использование API
с искусственным интеллектом……………………………………………. 247

Глава 12. Взаимосвязь API и искусственного интеллекта…………………….. 249

Точки пересечения ИИ и API…………………………………………………………………………………………………… 249

Проектирование API-интерфейсов для использования с генеративным ИИ
и большими языковыми моделями………………………………………………………………………………………….. 250

Определение искусственного интеллекта……………………………………………………………………………… 253

Генеративный ИИ и большие языковые модели……………………………………………………………………. 253

Создание агентных ИИ-приложений……………………………………………………………………………………… 254

Представление третьей части портфолио-проекта………………………………………………………………. 255

Запуск вашей среды GitHub Codespace…………………………………………………………………………………. 255

Клонирование репозитория части третьей………………………………………………………………… 255

Запуск вашей среды GitHub Codespace……………………………………………………………………… 256

Дополнительные источники информации……………………………………………………………………………… 257

Резюме………………………………………………………………………………………………………………………………………. 257

Глава 13. Развертывание API машинного обучения…………………………….. 259

Обучение моделей машинного обучения………………………………………………………………………………. 260

Программные средства, используемые в данной главе……………………………………………………….. 261

ONNX Runtime………………………………………………………………………………………………………………. 261

scikit-learn………………………………………………………………………………………………………………………. 262

sklearn-onnx…………………………………………………………………………………………………………………… 262

Установка в кодовое пространство новых библиотек…………………………………………………………. 262

Использование процесса CRISP-DM……………………………………………………………………………………… 263

Осмысление бизнес-задачи…………………………………………………………………………………………………….. 263

Анализ данных…………………………………………………………………………………………………………………………. 264

Подготовка данных…………………………………………………………………………………………………………………. 266

Моделирование……………………………………………………………………………………………………………………….. 266

Оценка………………………………………………………………………………………………………………………………………. 269

Развертывание………………………………………………………………………………………………………………………….. 269

Дополнительные источники информации……………………………………………………………………………… 277

Резюме………………………………………………………………………………………………………………………………………. 278

Глава 14. Использование API с LangChain……………………………………………. 279

Вызов искусственного интеллекта с использованием API (посредством LangChain)……….. 280

Создание LangGraph-агента…………………………………………………………………………………………………… 281

Регистрация в Anthropic……………………………………………………………………………………………….. 282

Запуск вашего кодового пространства GitHub………………………………………………………….. 283

Установка в кодовое пространство новых библиотек…………………………………………………………. 283

Создание блокнота Jupyter Notebook…………………………………………………………………………………….. 284

Общение с LangGraph-агентом……………………………………………………………………………………………….. 287

Локальный запуск API SportsWorldCentral (SWC)………………………………………………………………… 288

Установка Software Development Kit (SDK) swcpy………………………………………………………………… 289

Создание набора инструментов LangChain………………………………………………………………………….. 289

Вызов API-интерфейсов с использованием ИИ (с применением LangGraph)……………………… 293

Общение с агентом (с использованием инструментов)………………………………………………………… 295

Дополнительные источники информации……………………………………………………………………………… 297

Резюме………………………………………………………………………………………………………………………………………. 297

Глава 15. Использование ChatGPT для вызова вашего API………………….. 299

Архитектура вашего приложения………………………………………………………………………………………….. 299

Начало работы с ChatGPT……………………………………………………………………………………………………… 300

Создание специализированной GPT………………………………………………………………………………………. 300

Запуск вашего кодового пространства GitHub…………………………………………………………………….. 303

Запуск SportsWorldCentral (SWC) API в кодовом пространстве GitHub……………………………… 304

Добавление в ваш OAS-файл раздела Servers……………………………………………………………………….. 305

Создание GPT-действия…………………………………………………………………………………………………………… 306

Тестирование API в вашем GPT……………………………………………………………………………………………… 308

Общение с вашим специализированным GPT……………………………………………………………………….. 309

Завершение третьей части вашего портфолио-проекта………………………………………………………. 311

Резюме………………………………………………………………………………………………………………………………………. 313

Предметный указатель…………………………………………………………………………. 315

Об авторе……………………………………………………………………………………………… 317

Об изображении на обложке………………………………………………………………… 319

Опубликовано

Новинка: “Языковые модели без лишних слов”

Языковые модели без лишних слов

Книга представляет собой лаконичное и в то же время исчерпывающее руководство по построению языковых моделей. Рассматриваются математические основы машинного обучения, векторные представления и работа нейронных сетей. Изложены принципы моделирования языка: от мешков слов и эмбеддингов до рекуррентных сетей и архитектуры трансформеров. Приводятся полные реализации  описанных моделей и методов на Python с использованием фреймворка PyTorch, включая примеры в виде Jupyter-блокнотов. Описаны методы обучения, тонкой настройки и оптимизации больших языковых моделей: LoRA, инженерия промптов, оценка качества, а также вопросы авторского права и этики. В заключительной главе даны направления для дальнейшего изучения: смесь экспертов, сжатие моделей, выравнивание на основе предпочтений, мультимодальные модели.

Для разработчиков и специалистов по языковым моделям

Эта книга развеяла для меня множество концептуальных неясностей в том, как на самом деле работает машинное обучение — она кристально ясная. Разобранные примеры и приложения в виде блокнотов Jupyter дали мне надежную отправную точку для дальнейших экспериментов. Даже если вы не планируете строить карьеру в области прикладного машинного обучения, эта книга станет прочным фундаментом для осмысления возможностей этих уникальных новых инструментов.
Винт Серф (Vint Cerf)— «отец Интернета», создатель протокола TCP/IP, лауреат премии Тьюринга, вице-президент Google.

Ключевые особенности книги:

  • Математические основы с понятными объяснениями
  • Полные реализации на Python с использованием PyTorch ( код доступен на GitHub)
  • Естественное продвижение от простых моделей к трансформерам
  • Практические блокноты Jupyter для каждой темы
  • Теория, иллюстрации и код в каждой главе

Книгу “Языковые модели без лишних слов” можно купить в нашем интенет-магазине.

Опубликовано

“Машинное обучение для приложений высокого риска: подходы к ответственному искусственному интеллекту”

Машинное обучение для приложений высокого риска

Книга представляет собой комплексное руководство по применению искусственного интеллекта и машинного обучения (ИИ/ML)  с целью снижения рисков для современного бизнеса, связанного с использованием этих технологий. Рассмотрены основы управления рисками и компьютерной безопасности, нормативные акты, ответственность за качество продуктов, основанных на ML, а также объяснимые модели и методы их проверки, включая новый фреймворк управления рисками NIST AI. Читателю предложен углубленный взгляд на программирование с использованием Python и  подробными примерами для структурированных и неструктурированных данных. Особое внимание уделяется объяснимым бустинговым машинам, библиотеке XGBoost и методам повышения качества моделей ML. Представлены основанные на реальном опыте советы о том, как организовать успешную работу с приложениями высокого риска. Приведены практические примеры, иллюстрирующие важность и сложность внедрения ML в различных отраслях.

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

В рамках подходов к ответственному использованию ИИ в книге описана целостная структура для улучшения технологии ИИ/МО, бизнес-процессов и культурных компетенций, основанная на лучших практиках управления рисками, кибербезопасности, конфиденциальности данных и прикладных социальных наук.

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

  • Изучите технические методы разработки ответственного ИИ в таких вопросах как объяснимость, проверка и отладка моделей, управление предвзятостью, конфиденциальность данных и безопасность ML
  • Уделите особое внимание объяснимым бустинговым машинам, библиотеке XGBoost и методам повышения качества моделей
  • Узнайте, как создать успешную и эффективную систему управления рисками
  • Ознакомьтесь с обзором действующих стандартов, законов и критериев оценки технологий ИИ, включая новый фреймворк управления рисками NIST AI
  • Воспользуйтесь наглядными примерами углубленного программирования на Python , а также интерактивными ресурсами на GitHub и Colab

Книгу “Машинное обучение для приложений высокого риска: подходы к ответственному искусственному интеллекту” можно купить в нашем интенет-магазине.

Краткое оглавление…………………………………………………………………………………. 5

Отзывы о книге……………………………………………………………………………………… 15

Предисловие…………………………………………………………………………………………… 19

Введение………………………………………………………………………………………………… 21

Кому адресована эта книга………………………………………………………………………………………………………. 22

Что вы узнаете из этой книги…………………………………………………………………………………………………….. 22

Соответствие системе управления рисками искусственного интеллекта NIST………… 24

Структура книги………………………………………………………………………………………………………………………… 25

Часть I……………………………………………………………………………………………………………………………… 25

Часть II…………………………………………………………………………………………………………………………….. 26

Часть III…………………………………………………………………………………………………………………………… 26

Примеры наборов данных………………………………………………………………………………………………………… 26

Кредитные данные Тайваня………………………………………………………………………………………….. 27

Данные рентгенографии грудной клетки Kaggle………………………………………………………….. 28

Условные обозначения, принятые в этой книге………………………………………………………………………. 29

Архив с иллюстрациями к книге……………………………………………………………………………………………….. 29

Благодарности…………………………………………………………………………………………………………………………… 30

Часть I. Теория и практика управления рисками в приложениях ИИ            31

Глава 1. Современное управление рисками в ML…………………………………… 33

Обзор нормативно-правовой базы…………………………………………………………………………………………… 34

Закон ЕС об искусственном интеллекте……………………………………………………………………….. 34

Федеральные законы и правила США………………………………………………………………………….. 35

Государственные и муниципальные законы……………………………………………………………….. 36

Изначальная ответственность за качество продукта………………………………………………….. 37

Правоприменительная практика Федеральной торговой комиссии………………………….. 38

Авторитетные методики……………………………………………………………………………………………………………. 39

Инциденты с ИИ…………………………………………………………………………………………………………………………. 41

Культурные аспекты управления рисками машинного обучения………………………………………… 44

Организационная ответственность……………………………………………………………………………….. 44

Культура эффективного испытания……………………………………………………………………………… 46

Разнообразные и опытные команды…………………………………………………………………………….. 46

Испытание продукта на себе…………………………………………………………………………………………. 47

Двигайтесь быстро и ломайте устои…………………………………………………………………………….. 47

Организационные процессы управления рисками машинного обучения…………………………….. 48

Прогнозирование возможных отказов………………………………………………………………………….. 48

Известные отказы…………………………………………………………………………………………………… 49

Неспособность предвидения…………………………………………………………………………………. 49

Процессы управления модельными рисками……………………………………………………………….. 50

Уровни риска………………………………………………………………………………………………………….. 50

Документация модели……………………………………………………………………………………………. 51

Мониторинг модели……………………………………………………………………………………………….. 52

Инвентарный учет моделей…………………………………………………………………………………… 53

Проверка системы и аудит процессов………………………………………………………………….. 53

Управление изменениями………………………………………………………………………………………. 54

За пределами управления модельными рисками………………………………………………………… 54

Аудит и оценка модели………………………………………………………………………………………….. 55

Оценка воздействия………………………………………………………………………………………………… 55

Подача апелляции, отмена решения и отказ от участия……………………………………. 56

Парное и двойное программирование………………………………………………………………….. 56

Ограничение полномочий при развертывании модели………………………………………. 57

Награда за обнаружение ошибок…………………………………………………………………………. 57

Реагирование на инциденты с ИИ…………………………………………………………………………. 58

Пример: взлет и падение iBuying от Zillow………………………………………………………………………………. 60

Последствия…………………………………………………………………………………………………………………….. 61

Какие уроки мы можем извлечь?…………………………………………………………………………………… 61

Ресурсы……………………………………………………………………………………………………………………………………….. 64

Глава 2. Интерпретируемость и объяснимость……………………………………….. 65

Машинное обучение………………………………………………………………………………………………………………….. 65

Важные принципы интерпретируемости и объяснимости…………………………………………………….. 66

Объяснимые модели…………………………………………………………………………………………………………………… 71

Аддитивные модели……………………………………………………………………………………………………….. 71

Регрессия со штрафом……………………………………………………………………………………………. 71

Обобщенные аддитивные модели…………………………………………………………………………. 75

GA2M и объяснимые бустерные машины……………………………………………………………. 76

Деревья решений…………………………………………………………………………………………………………….. 76

Одиночные деревья решений………………………………………………………………………………… 76

Ограниченные модели XGBoost……………………………………………………………………………. 79

Экосистема объяснимых моделей машинного обучения……………………………………………. 79

Апостериорное объяснение………………………………………………………………………………………………………. 82

Атрибуция и важность признаков…………………………………………………………………………………. 83

Локальные объяснения и атрибуция признаков………………………………………………….. 84

Глобальная значимость признака………………………………………………………………………… 91

Суррогатные модели……………………………………………………………………………………………………… 95

Суррогатные модели дерева решений…………………………………………………………………. 95

Линейные модели и локально интерпретируемые объяснения………………………….. 97

Якоря и правила……………………………………………………………………………………………………… 99

Графическое представление характеристик модели………………………………………………….. 99

Частичная зависимость и индивидуальное условное ожидание……………………….. 99

Накопленный локальный эффект……………………………………………………………………….. 102

Профилирование кластеров………………………………………………………………………………………… 102

Трудноразрешимые проблемы апостериорного объяснения на практике…………………………. 103

Сочетание объяснимых моделей и апостериорных объяснений………………………………………… 107

Пример: алгоритмическая корректировка оценок………………………………………………………………… 109

Ресурсы…………………………………………………………………………………………………………………………………….. 112

Глава 3. Отладка систем машинного обучения…………………………………….. 113

Обучение…………………………………………………………………………………………………………………………………… 114

Воспроизводимость……………………………………………………………………………………………………… 115

Качество данных………………………………………………………………………………………………………….. 116

Спецификация модели для вывода в реальных условиях…………………………………………. 121

Бенчмарки и их альтернативы……………………………………………………………………………. 121

Калибровка…………………………………………………………………………………………………………… 121

Конструктная валидность…………………………………………………………………………………… 122

Предположения и ограничения…………………………………………………………………………… 123

Функции потерь по умолчанию………………………………………………………………………….. 123

Множественные сравнения…………………………………………………………………………………. 123

Будущее безопасного и надежного машинного обучения……………………………….. 124

Отладка модели……………………………………………………………………………………………………………………….. 124

Тестирование программного обеспечения…………………………………………………………………. 125

Традиционная оценка модели…………………………………………………………………………………….. 126

Распространенные ошибки ML…………………………………………………………………………………… 128

Смещение распределений……………………………………………………………………………………. 128

Эпистемическая неопределенность и разреженность данных………………………… 129

Нестабильность……………………………………………………………………………………………………. 130

Утечка……………………………………………………………………………………………………………………. 131

Петля обратной связи…………………………………………………………………………………………… 132

Переобучение……………………………………………………………………………………………………….. 132

Ложное обучение…………………………………………………………………………………………………. 133

Недостаточное обучение…………………………………………………………………………………….. 134

Неполная идентификация……………………………………………………………………………………. 134

Анализ остатков……………………………………………………………………………………………………………. 137

Анализ и визуализация остатков………………………………………………………………………… 137

Моделирование остатков……………………………………………………………………………………. 138

Локальный вклад в остатки…………………………………………………………………………………. 139

Анализ чувствительности……………………………………………………………………………………………. 141

Эталонные модели……………………………………………………………………………………………………….. 144

Исправление ошибок……………………………………………………………………………………………………. 145

Развертывание………………………………………………………………………………………………………………………….. 148

Безопасность в предметной области………………………………………………………………………….. 148

Мониторинг модели……………………………………………………………………………………………………… 150

Устаревание модели и дрейф концепта……………………………………………………………… 150

Обнаружение и устранение дрейфа……………………………………………………………………. 151

Мониторинг нескольких ключевых показателей эффективности……………………. 152

Значения вне диапазона………………………………………………………………………………………. 152

Обнаружение аномалий и эталонные модели…………………………………………………… 152

Аварийные выключатели…………………………………………………………………………………….. 153

Пример: смерть от автономного транспортного средства…………………………………………………… 154

Последствия………………………………………………………………………………………………………………….. 154

Неподготовленная правовая система…………………………………………………………………………. 154

Какие уроки мы можем извлечь?…………………………………………………………………………………. 155

Ресурсы…………………………………………………………………………………………………………………………………….. 156

Глава 4. Борьба с предвзятостью в машинном обучении……………………… 157

Определения предвзятости в ISO и NIST……………………………………………………………………………….. 159

Системная предвзятость………………………………………………………………………………………………. 160

Статистическая предвзятость……………………………………………………………………………………… 160

Человеческая предвзятость и культура науки о данных………………………………………….. 160

Правовые понятия предвзятости ML в США…………………………………………………………………………. 162

Кто обычно страдает от предвзятости систем ML……………………………………………………………….. 165

Ущерб от предвзятости, который испытывают люди…………………………………………………………… 167

Тестирование на предвзятость……………………………………………………………………………………………….. 169

Проверка данных………………………………………………………………………………………………………….. 169

Традиционные подходы: тестирование эквивалентных результатов…………………….. 172

Тестирование статистической значимости……………………………………………………….. 174

Проверка практической значимости………………………………………………………………….. 174

Новый взгляд: тестирование эквивалентности качества работы…………………………….. 176

Чего нам ожидать: тесты для более широкой экосистемы машинного обучения….. 178

Сводный план тестирования……………………………………………………………………………………….. 181

Смягчение предвзятости………………………………………………………………………………………………………….. 183

Технические факторы смягчения предвзятости…………………………………………………………. 184

Научный подход и план эксперимента………………………………………………………………………. 184

Методы смягчения предвзятости………………………………………………………………………………… 186

Человеческий фактор в смягчении предвзятости……………………………………………………….. 190

Пример: вознаграждение за выявленные ошибки предвзятости…………………………………………. 193

Ресурсы…………………………………………………………………………………………………………………………………….. 196

Глава 5. Безопасность машинного обучения………………………………………… 197

Основы безопасности………………………………………………………………………………………………………………. 199

Состязательное мышление………………………………………………………………………………………….. 199

Триада CIA……………………………………………………………………………………………………………………. 200

Лучшие методы обеспечения безопасности для специалистов по данным……………. 201

Атаки на системы ML……………………………………………………………………………………………………………… 204

Атаки на целостность: манипулирование результатами машинного обучения…….. 204

Примеры состязательных атак……………………………………………………………………………. 205

Бэкдор-атаки………………………………………………………………………………………………………… 205

Атаки с отравлением данных……………………………………………………………………………… 206

Атаки путем подмены личности и уклонения……………………………………………………. 207

Атаки на объяснения машинного обучения………………………………………………………. 208

Атаки на конфиденциальность: извлеченная информация………………………………………. 209

Атаки извлечения и инверсии модели………………………………………………………………… 209

Атаки с выводом о членстве………………………………………………………………………………… 210

Общие проблемы безопасности ML………………………………………………………………………………………. 211

Меры противодействия…………………………………………………………………………………………………………… 214

Отладка модели в целях безопасности………………………………………………………………………. 214

Поиск состязательных примеров и анализ чувствительности…………………………. 214

Аудит на предмет инсайдерского отравления данных…………………………………….. 215

Тестирование на предвзятость……………………………………………………………………………. 215

Этический взлом: атаки с извлечением моделей……………………………………………….. 215

Мониторинг модели в целях безопасности………………………………………………………………… 216

Технологии повышения конфиденциальности…………………………………………………………… 218

Федеративное обучение………………………………………………………………………………………. 218

Дифференциальная приватность………………………………………………………………………… 218

Робастное машинное обучение…………………………………………………………………………………… 221

Универсальные контрмеры………………………………………………………………………………………….. 221

Пример: реальные атаки уклонения………………………………………………………………………………………. 224

Атаки уклонения…………………………………………………………………………………………………………… 224

Какие уроки мы можем извлечь?…………………………………………………………………………………. 225

Ресурсы…………………………………………………………………………………………………………………………………….. 226

Часть II. Управление рисками ИИ в действии……………………. 227

Глава 6. Объяснимые бустинговые машины и модели XGBoost…………… 229

Уточнение определений и прозрачность машинного обучения………………………………………….. 229

Аддитивность или взаимодействия…………………………………………………………………………….. 230

Переход к причинно-следственной связи с ограничениями……………………………………… 231

Частичная зависимость и индивидуальное условное ожидание……………………………… 231

Значения Шепли…………………………………………………………………………………………………………… 234

Документация модели………………………………………………………………………………………………….. 235

Семейство объяснимых моделей GAM………………………………………………………………………………….. 236

Elastic Net — штрафуемая GLM с альфа- и лямбда-поиском……………………………………. 236

Обобщенные аддитивные модели……………………………………………………………………………….. 239

GA2M и объяснимые бустинговые машины………………………………………………………………. 244

XGBoost с ограничениями и апостериорными пояснениями……………………………………………….. 247

XGBoost с ограничениями и без ограничений……………………………………………………………. 247

Объяснение поведения модели с помощью частичной зависимости и ICE…………….. 253

Суррогатные модели дерева решений как метод объяснения………………………………….. 255

Пояснения на основе значений Шепли……………………………………………………………………….. 259

Проблемы со значениями Шепли………………………………………………………………………………… 262

Более информированный выбор модели……………………………………………………………………. 266

Ресурсы…………………………………………………………………………………………………………………………………….. 268

Глава 7. Объяснение классификатора изображений PyTorch……………….. 271

Как работает классификация рентгенограмм грудной клетки……………………………………………. 272

Новый взгляд на объяснимые модели и методы апостериорного объяснения…………………… 273

Обзор объяснимых моделей………………………………………………………………………………………… 273

Методы окклюзии…………………………………………………………………………………………………………. 274

Градиентные методы……………………………………………………………………………………………………. 274

Объяснимый ИИ для отладки моделей……………………………………………………………………….. 275

Объяснимые модели………………………………………………………………………………………………………………… 275

ProtoPNet и ее варианты………………………………………………………………………………………………. 276

Другие объяснимые модели глубокого обучения……………………………………………………… 277

Обучение и объяснение классификатора изображений PyTorch………………………………………… 278

Обучающие данные……………………………………………………………………………………………………… 278

Решение проблемы дисбаланса наборов данных……………………………………………………… 279

Дополнение данных и обрезка изображений…………………………………………………………….. 280

Обучение модели………………………………………………………………………………………………………….. 282

Оценка и метрики………………………………………………………………………………………………………….. 284

Создание апостериорных объяснений с помощью Captum……………………………………… 284

Окклюзия……………………………………………………………………………………………………………………….. 285

input*gradient………………………………………………………………………………………………………… 286

Интегрированные градиенты………………………………………………………………………………. 287

Послойное распространение релевантности…………………………………………………….. 289

Оценка пояснений модели……………………………………………………………………………………………. 290

Надежность апостериорных объяснений…………………………………………………………………… 291

Заключение………………………………………………………………………………………………………………………………. 295

Ресурсы…………………………………………………………………………………………………………………………………….. 296

Глава 8. Выбор и отладка моделей XGBoost…………………………………………. 299

Уточнение определений: отладка моделей ML……………………………………………………………………. 299

Выбор модели……………………………………………………………………………………………………………….. 300

Анализ чувствительности……………………………………………………………………………………………. 300

Анализ остатков……………………………………………………………………………………………………………. 302

Исправление………………………………………………………………………………………………………………….. 303

Выбор лучшей модели XGBoost…………………………………………………………………………………………….. 304

Анализ чувствительности XGBoost……………………………………………………………………………………….. 309

Стресс-тестирование модели XGBoost………………………………………………………………………. 310

Методика стресс-тестирования…………………………………………………………………………………… 311

Изменение данных для моделирования условий рецессии………………………………………. 312

Поиск состязательных примеров………………………………………………………………………………… 314

Анализ остатков для XGBoost………………………………………………………………………………………………… 318

Анализ и визуализация остатков………………………………………………………………………………… 319

Сегментный анализ ошибок………………………………………………………………………………………… 323

Моделирование остатков…………………………………………………………………………………………….. 325

Исправление выбранной модели……………………………………………………………………………………………. 327

Чрезмерная важность признака PAY_0………………………………………………………………………. 328

Разные ошибки……………………………………………………………………………………………………………… 330

Заключение………………………………………………………………………………………………………………………………. 333

Ресурсы…………………………………………………………………………………………………………………………………….. 334

Глава 9. Отладка классификатора изображений PyTorch…………………….. 335

Уточнение понятий: отладка моделей DL…………………………………………………………………………….. 337

Отладка классификатора изображений PyTorch………………………………………………………………….. 341

Качество данных и утечки…………………………………………………………………………………………… 341

Тестирование программного обеспечения для DL……………………………………………………. 343

Анализ чувствительности моделей DL……………………………………………………………………….. 344

Тестирование на смещение домена и субпопуляции………………………………………… 345

Примеры состязательных атак……………………………………………………………………………. 349

Возмущение вычислительных гиперпараметров………………………………………………. 352

Устранение проблем…………………………………………………………………………………………………….. 352

Исправление данных……………………………………………………………………………………………. 353

Исправления программного обеспечения………………………………………………………….. 355

Исправления чувствительности………………………………………………………………………………….. 359

Внесение шума……………………………………………………………………………………………………… 359

Другие способы улучшения стабильности………………………………………………………… 360

Заключение………………………………………………………………………………………………………………………………. 363

Ресурсы…………………………………………………………………………………………………………………………………….. 364

Глава 10. Тестирование и исправление предвзятости
с помощью XGBoost……………………………………………………………………………… 365

Уточнение понятий: управление предвзятостью в ML………………………………………………………… 366

Обучение модели………………………………………………………………………………………………………….. 369

Оценка моделей на предмет предвзятости…………………………………………………………………………….. 373

Способы тестирования для групп……………………………………………………………………………….. 374

Тестирование качества прогнозов……………………………………………………………………… 376

Традиционное тестирование показателей исходов………………………………………….. 381

Индивидуальная справедливость……………………………………………………………………………….. 384

Опосредованная предвзятость…………………………………………………………………………………….. 388

Исправление предвзятости……………………………………………………………………………………………………… 389

Предварительная обработка……………………………………………………………………………………….. 390

Внутренняя обработка…………………………………………………………………………………………………. 394

Постобработка……………………………………………………………………………………………………………… 398

Выбор модели……………………………………………………………………………………………………………….. 399

Заключение………………………………………………………………………………………………………………………………. 404

Ресурсы…………………………………………………………………………………………………………………………………….. 406

Глава 11. Атака красной команды на XGBoost……………………………………. 407

Уточнение понятий………………………………………………………………………………………………………………….. 408

Триада CIA……………………………………………………………………………………………………………………. 408

Атаки……………………………………………………………………………………………………………………………… 409

Контрмеры…………………………………………………………………………………………………………………….. 411

Обучение модели……………………………………………………………………………………………………………………… 412

Атаки с участием красной команды………………………………………………………………………………………. 417

Атаки с извлечением моделей……………………………………………………………………………………… 417

Атаки с состязательными примерами…………………………………………………………………………. 421

Атаки вывода о членстве……………………………………………………………………………………………… 423

Отравление данных……………………………………………………………………………………………………… 425

Бэкдоры…………………………………………………………………………………………………………………………. 427

Заключение………………………………………………………………………………………………………………………………. 431

Ресурсы…………………………………………………………………………………………………………………………………….. 432

Часть III. Заключение…………………………………………………………………. 435

Глава 12. Как добиться успеха в машинном обучении высокого риска.. 437

Кто в команде?…………………………………………………………………………………………………………………………. 438

Наука или техника?…………………………………………………………………………………………………………………. 440

Метод анализа данных………………………………………………………………………………………………… 440

Научный метод…………………………………………………………………………………………………………….. 442

Оценка опубликованных результатов и заявлений………………………………………………………………. 443

Применяйте внешние стандарты……………………………………………………………………………………………. 445

Смягчение рисков на основе здравого смысла……………………………………………………………………… 448

Заключение………………………………………………………………………………………………………………………………. 452

Ресурсы…………………………………………………………………………………………………………………………………….. 452

Предметный указатель…………………………………………………………………………. 453

Об авторах……………………………………………………………………………………………. 457

Об изображении на обложке………………………………………………………………… 459

Опубликовано

Встречайте: “Искусственный интеллект глазами хакера”

Искусственный интеллект глазами хакера ( Библиотека журнала «Хакер»)

Эта книга — сборник лучших, тщательно отобранных статей из легендарного журнала «Хакер». Рассмотрены современные подходы к использованию искусственного интеллекта в области информационной безопасности. Описаны методы обхода ограничений ChatGPT, рассмотрено применение нейросетей для написания эксплойтов и поиска уязвимостей в коде. Представлены практические кейсы использования GPT-4 на багбаунти, приведены способы выманивания паролей с помощью чат-ботов и QR-кодов. Даны рекомендации по применению нейросетей и языковой модели Llama для анализа и поиска критичных данных в коде программ. Отдельное внимание уделено генеративному ИИ: показана карта его возможностей, а также способы улучшения изображений с помощью нейросетей. Книга станет ценным источником знаний для тех, кто хочет изучить искусственный интеллект через призму хакерских технологий.

Для пользователей ПК

Эта книга — сборник лучших, тщательно отобранных статей из легендарного журнала «Хакер». В материалах книги рассказывается об использовании искусственного интеллекта (ИИ) в сфере информационной безопасности. Читатель узнает, как большие языковые модели и нейросети могут помочь пентестерам, разработчикам ПО и специалистам по защите информации.

Книгу “Искусственный интеллект глазами хакера“.

Предисловие…………………………………………………………………………………………….. 7

  1. Каким бывает машинное обучение и как оно применяется вбезопасности (Константин Коновалов)………………………………………………………………………………………………………………. 11

Классический кодинг vs машинное обучение…………………………………………………………………………. 11

Задачи искусственного интеллекта…………………………………………………………………………………………. 12

Чем машинное обучение может помочь в ИБ………………………………………………………………………….. 13

Что включает в себя машинное обучение……………………………………………………………………………….. 15

Данные………………………………………………………………………………………………………………………………… 15

Признаки……………………………………………………………………………………………………………………………… 15

Алгоритмы………………………………………………………………………………………………………………………….. 16

Чем отличаются разные алгоритмы…………………………………………………………………………………………. 17

Наивный байесовский классификатор…………………………………………………………………………….. 17

Деревья решений………………………………………………………………………………………………………………… 17

Отличия нейросетей от других алгоритмов…………………………………………………………………………….. 18

Особенности машинного обучения в ИБ…………………………………………………………………………………. 18

Подведем итоги………………………………………………………………………………………………………………………….. 19

  1. Карта мира генеративного ИИ. Выбираем модель и интерфейс, разбираемся с терминами (Олег Афонин)…………………………………………………………………………………………………… 21

Что нужно, чтобы начать создавать картинки?……………………………………………………………………… 21

Видеокарта…………………………………………………………………………………………………………………………. 21

Софт…………………………………………………………………………………………………………………………………….. 22

Что из этого выбрать?……………………………………………………………………………………………………………….. 23

Модели и архитектуры……………………………………………………………………………………………………………… 24

Базовые и дополнительные модели…………………………………………………………………………………………. 26

Из каких частей состоит базовая модель…………………………………………………………………………. 27

Обученные модели и ремиксы…………………………………………………………………………………………… 28

Где брать базовые модели………………………………………………………………………………………………… 28

  1. «Дэн» может все. Как пользователи обманывают ChatGPT
    (Мария Нефёдова)…………………………………………………………………………………… 31

Заставить ИИ сказать запрещенное…………………………………………………………………………………………. 31

DAN……………………………………………………………………………………………………………………………………………… 33

Другой абьюз ChatGPT……………………………………………………………………………………………………………… 37

  1. ChatGPT на рыбалке. Выманиваем пароль при помощи QR-кода
    и чат-бота (Дмитрий Марюшкин)…………………………………………………………….. 43

Задача…………………………………………………………………………………………………………………………………………. 43

Проблемы……………………………………………………………………………………………………………………………………. 44

Решение………………………………………………………………………………………………………………………………………. 44

Сценарий рассылки…………………………………………………………………………………………………………………… 47

Выводы……………………………………………………………………………………………………………………………………….. 50

  1. Запрягаем Лламу на поиски критичных данных в коде
    (Дмитрий Марюшкин)……………………………………………………………………………… 51

Ищем критичное в коде……………………………………………………………………………………………………………… 51

Скоринг на минималках……………………………………………………………………………………………………………. 53

Подключаем железные мозги……………………………………………………………………………………………………. 53

Локальное использование модели……………………………………………………………………………………………. 57

Выводы……………………………………………………………………………………………………………………………………….. 61

  1. Роботы на охоте. Применяем GPT-4 на багбаунти
    (Андрей “W0lFreaK” Козлов)……………………………………………………………………… 63

Разведка………………………………………………………………………………………………………………………………………. 63

Поиск поддоменов……………………………………………………………………………………………………………… 63

Технологии и версии………………………………………………………………………………………………………….. 64

Поиск мисконфигов……………………………………………………………………………………………………………………. 66

Эксплуатация…………………………………………………………………………………………………………………………….. 67

CSRF……………………………………………………………………………………………………………………………………. 67

XSS………………………………………………………………………………………………………………………………………. 69

XXE……………………………………………………………………………………………………………………………………… 70

Деобфускация и анализ кода…………………………………………………………………………………………….. 71

Составление отчета…………………………………………………………………………………………………………………… 72

Выводы……………………………………………………………………………………………………………………………………….. 73

  1. Разоблачаем баги-пустышки и пишем эксплойт при помощи ChatGPT (Хусейн Гадашов) 75

CVE-2023-39526: «уязвимость» в PrestaShop………………………………………………………………………….. 76

CVE-2023-6875: баг в Post SMTP Mailer………………………………………………………………………………….. 78

Какое имя пользователя у администратора?………………………………………………………………………….. 80

Забыли пароль…………………………………………………………………………………………………………………………… 81

Логи электронной почты…………………………………………………………………………………………………………… 81

Изменение пароля………………………………………………………………………………………………………………………. 83

Загрузка шелла………………………………………………………………………………………………………………………….. 83

Бум-бум-эксплойт с GPT……………………………………………………………………………………………………………. 87

Выводы……………………………………………………………………………………………………………………………………….. 88

  1. Сделай мне красиво! Изобретаем персональный нейросетевой фотоувеличитель (Игорь Орещенков)………………………………………………………………………………………………………………. 89

Просто сделай мне красиво!……………………………………………………………………………………………………… 89

Необходимое оборудование…………………………………………………………………………………………………….. 91

Операционная система……………………………………………………………………………………………………………… 93

Среда исполнения……………………………………………………………………………………………………………………… 94

Увеличение виртуальной памяти……………………………………………………………………………………… 96

Нейросети «фотоувеличителя»…………………………………………………………………………………………………. 97

Борьба с прогрессом………………………………………………………………………………………………………………….. 99

Обработка фотографий…………………………………………………………………………………………………………… 100

Выводы……………………………………………………………………………………………………………………………………… 101

«Хакер»: безопасность, разработка, DevOps…………………………………………. 103

Предметный указатель…………………………………………………………………………. 107

Опубликовано

Искусственный интеллект для периферийных устройств: осваиваем встраиваемые системы для машинного обучения

Искусственный интеллект для периферийных устройств

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

Для специалистов по искусственному интеллекту и Интернету вещей

Животное на обложке книги “Искусственный интеллект для периферийных устройств” — сибирский горный козел (Capra sibirica). Особей этого вида можно встретить по всей Азии в таких странах, как Российская Федерация, Китай, Монголия, Пакистан и Казахстан. Сибирские горные козлы — это, по сути, крупный вид диких козлов.

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

Устройства, объединенные в Интернет вещей (IoT) самостоятельно принимают решения, опираясь на те 99% сенсорных данных, которые ранее просто отбрасывались ради экономии средств, полосы передачи данных или из-за ограничений питания. При помощи таких технологий как машинное обучение для встраиваемых систем можно учитывать информацию о человеческом поведении и развертывать приложения на любой платформе – от исключительно маломощных микроконтроллеров до встраиваемых устройств, работающих под Linux.

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

В этой книге:

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

Книгу “Искусственный интеллект для периферийных устройств: осваиваем встраиваемые системы для машинного обучения“.

Опубликовано

Вышла книга “Базовая математика для искусственного интеллекта. Математика нового уровня для эффективных и успешных систем ИИ”

Базовая математика для искусственного ин-теллекта

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

Для специалистов в области ИИ, машинного обучения и науки о данных

Сегодня многие сферы бизнеса стремятся внедрять новые технологии на основе ИИ и управления данными.

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

Автор книги Хала Нельсон не углубляется в сложные академические теории, она рассказывает о математике, необходимой для успешной работы в области ИИ, уделяя особое внимание реальным приложениям и современным моделям.

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

Листать

Прочитав книгу, вы сможете

  • уверенно пользоваться языками ИИ, машинного обучения, науки о данных, математики;
  • объединять модели машинного обучения и модели естественного языка в рамках одной математической структуры;
  • легко работать с графовыми и сетевыми данными;
  • изучать реальные данные, визуализировать преобразования пространства, уменьшать раз-мерность, обрабатывать изображения;
  • решать, какие модели использовать для проектов, основанных на данных;
  • изучать различные последствия и ограничения ИИ.

Рынки технологий и ИИ подобны реке, где отдельные участки движутся быстрее других. Для успешного применения ИИ требуется умение оценить направление течения и закрепить знание технологий прочным фундаментом, чему способствует эта книга, причем в увлекательной и всеобъемлющей форме. Хале удалось показать математику в выгодном свете широкому кругу людей, входящих в будущее под эгидой ИИ!
 Адри Пуркаястха, руководитель группы по аналитике операционных рисков в сфере ИИ и цифровых рисков, банк BNP Paribas

Книгу “Базовая математика для искусственного интеллекта. Математика нового уровня для эффективных и успешных систем ИИ” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Hala Nelson

Хала Нельсон (Hala Nelson) — доцент кафедры математики в Университете Джеймса Мэдисона (James Madison University), специализируется на математическом моделировании, консультирует официальные органы по вопросам чрезвычайных ситуаций и инфраструктуры. Получила докторскую степень по математике в Курантовском институте математических наук (Courant Institute of Mathematical Sciences) при Нью-Йоркском университете.

Опубликовано

Новинка: “Книга Kaggle. Машинное обучение и анализ данных”

Книга Kaggle. Машинное обучение и анализ данных

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

Конкурсы Kaggle – это поле для состязаний, где меряются силами миллионы специалистов по науке о данных (data science), которые сами себя именуют «кэглерами». Участие в таких конкурсах – верный способ профессионально вырасти в области анализа данных, влиться в замечательное сообщество единомышленников и приобрести бесценный опыт для развития карьеры. Авторы книги – грандмастера Kaggle. Они познакомят вас со стратегиями моделирования, которые более нигде не рассмотрены, и подскажут, как удобнее всего обрабатывать изображения, тексты, таблицы, как правильно реализовать обучение с подкреплением. Вы освоите качественные схемы валидации и станете уверенно ориентироваться в самых разных оценочных метриках.

Лука и Конрад рассказали о Kaggle максимально доступно. Оба они – первоклассные профессионалы, пользующиеся большим авторитетом и уважением в сообществе Kaggle. Проштудировав эту книгу, можете смело регистрироваться на Kaggle и рассчитывать на высокие результаты.
Энтони Голдблум, основатель и генеральный директор Kaggle

В книге рассказано:

  • Как устроена соревновательная платформа Kaggle
  • Как выжать максимум из ноутбуков, датасетов и форумов Kaggle
  • Как правильно собирать портфолио проектов и идеи для развития карьеры
  • Как проектировать k-мерные и вероятностные схемы валидации
  • Как освоить наиболее распространённые и экзотические оценочные метрики
  • Как устроена бинарная и многоклассовая классификация объектов, а также их обнаружение
  • Как эффективно обращаться с временными рядами и обработкой естественного языка (NLP)
  • Как преуспеть в задачах на имитационное моделирование и оптимизацию

Книгу Kaggle. Машинное обучение и анализ данных ” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие. 11

Составители. 13

Об авторах. 13

О рецензентах. 14

О респондентах. 15

Введение. 18

Для кого эта книга. 19

О чем эта книга. 19

Часть I. Знакомство с соревнованиями. 19

Часть II. Оттачивание соревновательных навыков. 20

Часть III. Использование соревнований в своей карьере. 21

Как получить максимальную отдачу от этой книги. 21

Загрузите файлы с примерами кода. 21

Загрузите цветные изображения. 22

Условные обозначения и соглашения. 22

Часть I. Знакомство с соревнованиями Kaggle. 23

Глава 1. Знакомство с Kaggle и другими соревнованиями
по науке о данных. 25

Появление и рост соревновательных платформ. 26

Соревновательная платформа Kaggle. 28

История Kaggle. 28

Другие конкурсные платформы.. 31

Знакомство с Kaggle. 33

Стадии соревнования. 33

Типы соревнований и примеры.. 36

Отправка решения и таблица результатов. 41

Парадигма каркаса для общих задач. 41

Что может пойти не так. 42

Вычислительные ресурсы.. 44

Kaggle Notebooks 45

Создание команд и нетворкинг. 46

Уровни и рейтинг. 49

Критика и возможности. 50

Резюме. 51

Глава 2. Организация данных. 53

Создание датасета. 53

Сбор данных. 57

Работа с датасетами. 62

Kaggle Datasets и Google Colab. 63

Юридические вопросы. 65

Резюме. 66

Глава 3. Работаем и учимся с Kaggle Notebooks 67

Создание блокнота. 68

Запуск блокнота. 71

Сохранение блокнотов на GitHub. 73

Как получить максимум от Kaggle Notebooks 75

Переход на Google Cloud Platform.. 76

На шаг дальше. 77

Курсы Kaggle Learn. 82

Резюме. 86

Глава 4. Используем форумы.. 87

Как работают форумы. 87

Примеры обсуждений. 92

Сетевой этикет. 97

Резюме. 97

Часть II. Оттачивание соревновательных навыков. 99

Глава 5. Задачи и метрики на соревнованиях. 101

Метрики оценивания и целевые функции. 102

Основные типы задач. 103

Регрессия. 104

Классификация. 104

Задачи ранжирования. 105

Датасет Meta Kaggle. 105

Как быть с незнакомыми метриками. 108

Метрики для задач регрессии. 112

Средний квадрат и R-квадрат.. 112

Среднеквадратичная ошибка. 113

Среднеквадратичная логарифмическая ошибка. 114

Средняя абсолютная ошибка. 115

Метрики для задач классификации. 116

Доля правильных ответов. 116

Точность и полнота. 118

F-мера. 120

Log Loss и ROC-AUC. 120

Коэффициент корреляции Мэтьюса. 122

Метрики для многоклассовой классификации. 123

Метрики для задач детектирования объектов. 129

Отношение площадей ограничивающих рамок. 131

Коэффициент Дайса. 132

Метрики для многоклассовой классификации и построение рекомендаций. 133

MAP@{K}. 133

Оптимизация метрики. 134

Нестандартные метрики и целевые функции. 135

Постобработка предсказаний. 138

Предсказание вероятностей и их корректировка. 139

Резюме. 143

Глава 6. Построение схемы валидации. 144

Подглядывание. 144

Почему важна валидация. 147

Смещение и разброс. 150

Стратегии разделения данных. 152

Контроль на отложенных данных. 153

Вероятностные методы оценки качества. 154

Контроль по k блокам. 154

Случайные разбиения. 162

Бутстрэп. 162

Настройка системы валидации. 166

Применение adversarial validation. 169

Пример реализации. 171

Различные распределения обучающих и тестовых данных. 172

Работа с утечками в данных. 176

Резюме. 180

Глава 7. Моделирование для табличных данных. 182

Tabular Playground Series 183

Начальное состояние случайного генератора и воспроизводимость. 186

Разведочный анализ данных. 188

Понижение размерности методами t-SNE и UMAP. 190

Уменьшение размера данных. 191

Преобразования признаков. 193

Простые производные признаки. 194

Метапризнаки на основе строк и столбцов. 196

Целевое кодирование. 197

Важность признаков и оценка качества. 202

Псевдометки. 205

Удаление шума с помощью автокодировщиков. 207

Нейросети для табличных конкурсов. 210

Резюме. 216

Глава 8. Оптимизация гиперпараметров. 218

Базовые методы оптимизации. 219

Поиск по сетке. 219

Случайный поиск. 221

Поиск сокращением вдвое. 222

Ключевые параметры и их использование. 225

Линейные модели. 225

Машины опорных векторов. 225

Случайные леса и экстремально рандомизированные деревья. 227

Градиентный бустинг над деревьями. 228

LightGBM.. 228

XGBoost 230

CatBoost 231

HistGradientBoosting. 232

Байесовская оптимизация. 235

Использование Scikit-optimize. 236

Настройки байесовской оптимизации. 241

Обобщение байесовской оптимизации на параметры нейронных сетей. 248

Создание моделей с KerasTuner 256

Подход TPE и Optuna. 265

Резюме. 270

Глава 9. Ансамбли: блендинг и стекинг. 271

Краткое введение в ансамблевые алгоритмы. 272

Усреднение. 275

Голосование. 277

Усреднение предсказаний. 279

Взвешенные средние. 280

Усреднение и кросс-валидация. 281

Корректируем усреднение для оценок ROC-AUC. 282

Блендинг и метамодели. 283

Блендинг: лучшие практики. 284

Стекинг. 289

Варианты стекинга. 293

Сложные решения с блендингом и стекингом. 294

Резюме. 297

Глава 10. Моделирование в компьютерном зрении. 299

Стратегии аугментации. 299

Встроенные аугментации Keras 305

Подход на основе ImageDataGenerator 305

Слои предварительной обработки. 308

Пакет albumentations 309

Классификация. 312

Обнаружение объектов. 319

Семантическая сегментация. 333

Резюме. 349

Глава 11. Моделирование для обработки естественного языка. 350

Анализ тональности текста. 350

Вопросы и ответы в открытом домене. 359

Стратегии аугментации текста. 374

Основные приемы.. 375

Пакет nlpaug. 380

Резюме. 383

Глава 12. Соревнования по моделированию и оптимизации. 384

Игра Connect X.. 385

Игра “Камень, ножницы, бумага”. 390

Соревнование Santa 2020. 393

Такие разные игры. 397

Резюме. 402

Часть III. Использование соревнований в своей карьере. 403

Глава 13. Создание портфолио проектов и идей. 405

Создание портфолио с помощью Kaggle. 405

Использование блокнотов и обсуждений. 410

Использование датасетов. 413

Организация своего присутствия в Интернете за пределами Kaggle. 417

Блоги и публикации. 418

GitHub. 421

Мониторинг обновлений и информационных бюллетеней о соревнованиях. 423

Резюме. 425

Глава 14. Поиск новых профессиональных возможностей. 426

Налаживание связей с другими исследователями данных на соревнованиях. 427

Участие в Kaggle Days и других встречах Kaggle. 438

Привлечение к себе внимания и другие возможности трудоустройства. 439

Методика STAR. 440

Резюме (и несколько напутственных слов) 442

Предметный указатель. 444

Опубликовано

Уже в продаже: “Проектирование систем машинного обучения”

Проектирование систем машинного обучения

егодня машинное обучение – основной практический аппарат для применения искусственного интеллекта. Книга, основанная на стэнфордском учебном курсе, не ограничивается разбором конкретных библиотек, а описывает высокоуровневый подход к разработке систем машинного обучения, который упрощает их поддержку и развитие, позволяет избежать переобучения, искажения результатов. Рассказано, как сделать новую систему машинного обучения или нейронную сеть, надёжной, репрезентативной и расширяемой, а также качественно доработать уже существующие системы. Также показано, как подобрать библиотеки и алгоритмы с учётом имеющегося множества данных и действующих бизнес-требований, конструировать признаки и отслеживать метрики.

Книга адресована программистам и специалистам по data science

Ключевые особенности

  • Инжиниринг данных и выбор нужных метрик, помогающих правильно решить задачу
  • Автоматизация процесса, позволяющая непрерывно разрабатывать, оценивать, развёртывать и обновлять модели
  • Разработка мониторинговой системы, позволяющей быстро обнаруживать и устранять проблемы, которые могут возникать в реальном использовании
  • Выстраивание платформы машинного обучения, которая была бы применима сразу во многих практических ситуациях
  • Ответственный подход к разработке систем машинного обучения

Чем эта книга не является

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

  • Модели машинного обучения , такие как кластеризация, логистическая регрессия, деревья решений, совместная фильтрация и различные архитектуры нейронных сетей, включая упреждающую, рекуррентную, сверточную и трансформирующую.
  • Методы машинного обучения , такие как контролируемое и неконтролируемое, градиентный спуск, функция цели/потери, регуляризация, обобщение и настройка гиперпараметров.
  • Такие метрики , как точность, F1, точность, полнота, ROC, среднеквадратическая ошибка и логарифмическая вероятность.
  • Статистические концепции, такие как дисперсия, вероятность и нормальное/длинное распределение.
  • Общие задачи машинного обучения, такие как языковое моделирование, обнаружение аномалий, классификация объектов и машинный перевод.

Книга основана на стэнфордском учебном курсе

Книгу “Проектирование систем машинного обучения” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Отзывы о книге……………………………………………………………………………………… 13

Предисловие…………………………………………………………………………………………… 15

Для кого предназначена эта книга?…………………………………………………………………………………………. 16

Чего вы не найдете в книге?………………………………………………………………………………………………………. 17

Навигация по книге……………………………………………………………………………………………………………………. 18

Репозиторий GitHub и сообщество…………………………………………………………………………………………… 19

Используемые обозначения………………………………………………………………………………………………………. 19

Использование примеров кода…………………………………………………………………………………………………. 20

Платформа онлайн-обучения O’Reilly……………………………………………………………………………………… 20

Как с нами связаться?………………………………………………………………………………………………………………… 21

Благодарности…………………………………………………………………………………………………………………………… 21

Глава 1. Обзор ML-систем……………………………………………………………………… 23

Когда использовать ML?…………………………………………………………………………………………………………… 24

Примеры использования машинного обучения………………………………………………………………………. 30

Понимание систем машинного обучения………………………………………………………………………………… 33

Машинное обучение в исследованиях и в производстве……………………………………………. 33

Различные участники процесса и их требования……………………………………………….. 34

Приоритеты вычислений……………………………………………………………………………………….. 36

Данные…………………………………………………………………………………………………………………….. 39

Объективность………………………………………………………………………………………………………… 40

Интерпретируемость……………………………………………………………………………………………… 41

Обсуждение…………………………………………………………………………………………………………….. 42

ML-системы в сравнении с традиционным ПО……………………………………………………………. 42

Итоги…………………………………………………………………………………………………………………………………………… 44

Глава 2. Введение в проектирование ML-систем……………………………………. 46

Цели для бизнеса и для ML……………………………………………………………………………………………………….. 46

Требования к ML-системам………………………………………………………………………………………………………. 49

Надежность…………………………………………………………………………………………………………………….. 49

Масштабируемость………………………………………………………………………………………………………… 50

Обслуживаемость…………………………………………………………………………………………………………… 51

Адаптивность………………………………………………………………………………………………………………….. 51

Итеративный процесс………………………………………………………………………………………………………………… 52

Формулирование ML-задач……………………………………………………………………………………………………… 54

Типы ML-задач……………………………………………………………………………………………………………….. 55

Классификация или регрессия?…………………………………………………………………………….. 55

Бинарная или мультиклассовая классификация?……………………………………………….. 56

Мультиклассовая или многометочная классификация?…………………………………….. 57

Несколько способов сформулировать задачу…………………………………………………….. 58

Целевые функции……………………………………………………………………………………………………………. 59

Разделение целей……………………………………………………………………………………………………. 60

Данные или разум?……………………………………………………………………………………………………………………. 62

Итоги…………………………………………………………………………………………………………………………………………… 64

Глава 3. Основы проектирования баз данных……………………………………….. 67

Источники данных…………………………………………………………………………………………………………………….. 68

Форматы данных……………………………………………………………………………………………………………………….. 70

JSON…………………………………………………………………………………………………………………………………. 71

Row-Major или Column-Major?……………………………………………………………………………………… 72

Текстовый формат или двоичный?……………………………………………………………………………….. 74

Модели данных………………………………………………………………………………………………………………………….. 75

Реляционная модель……………………………………………………………………………………………………….. 76

NoSQL………………………………………………………………………………………………………………………………. 79

Документальная модель………………………………………………………………………………………… 80

Графовая модель……………………………………………………………………………………………………. 81

Структурированные или неструктурированные данные?………………………………………….. 82

Хранение и обработка данных…………………………………………………………………………………………………. 84

Транзакционная и аналитическая обработка данных……………………………………………….. 84

ETL: извлечение, преобразование, загрузка………………………………………………………………… 87

Режимы потока данных…………………………………………………………………………………………………………….. 89

Передача данных через базы данных………………………………………………………………………….. 89

Передача данных через сервисы…………………………………………………………………………………… 89

Передача данных в режиме реального времени………………………………………………………….. 91

Пакетная обработка или потоковая?……………………………………………………………………………………….. 93

Итоги…………………………………………………………………………………………………………………………………………… 95

Глава 4. Обучающие данные…………………………………………………………………. 98

Семплирование………………………………………………………………………………………………………………………….. 99

Невероятностное семплирование…………………………………………………………………………………. 99

Простое случайное семплирование……………………………………………………………………………. 101

Стратифицированное семплирование………………………………………………………………………… 101

Взвешенное семплирование………………………………………………………………………………………… 101

Резервуарное семплирование……………………………………………………………………………………… 102

Семплирование по важности………………………………………………………………………………………. 103

Разметка……………………………………………………………………………………………………………………………………. 104

Ручные метки………………………………………………………………………………………………………………… 104

Множественность меток………………………………………………………………………………………. 105

Родословная данных……………………………………………………………………………………………. 106

Естественные метки……………………………………………………………………………………………………… 107

Длина петли обратной связи……………………………………………………………………………….. 109

Справляемся с недостатками меток……………………………………………………………………………. 110

Слабый контроль…………………………………………………………………………………………………. 111

Частичный контроль……………………………………………………………………………………………. 114

Трансферное обучение………………………………………………………………………………………… 115

Активное обучение………………………………………………………………………………………………. 116

Несбалансированность классов…………………………………………………………………………………………….. 118

Проблемы несбалансированности классов……………………………………………………………….. 118

Справляемся с несбалансированностью классов……………………………………………………… 120

Использование правильных оценочных метрик……………………………………………….. 121

Методы уровня данных: ресемплинг…………………………………………………………………. 124

Методы уровня алгоритма………………………………………………………………………………….. 125

Обучение с учетом затрат…………………………………………………………………………… 126

Потеря, сбалансированная по классу……………………………………………………….. 126

Фокальная потеря………………………………………………………………………………………… 127

Аугментация данных……………………………………………………………………………………………………………….. 128

Простые преобразования с сохранением меток………………………………………………………… 128

Возмущения…………………………………………………………………………………………………………………… 129

Синтез данных………………………………………………………………………………………………………………. 131

Итоги…………………………………………………………………………………………………………………………………………. 132

Глава 5. Конструирование признаков………………………………………………….. 135

Признаки сконструированные или автоматически генерируемые?……………………………………. 135

Общий обзор методов конструирования признаков…………………………………………………………….. 138

Обработка отсутствующих значений…………………………………………………………………………. 138

Удаление пропусков…………………………………………………………………………………………….. 140

Заполнение пропусков…………………………………………………………………………………………. 141

Масштабирование……………………………………………………………………………………………………….. 141

Дискретизация………………………………………………………………………………………………………………. 143

Кодирование категориальных признаков………………………………………………………………….. 144

Пересечение признаков………………………………………………………………………………………………… 146

Дискретный и непрерывный позиционный эмбеддинг……………………………………………… 147

Утечка данных…………………………………………………………………………………………………………………………. 149

Основные причины утечки данных…………………………………………………………………………….. 151

Случайная разбивка коррелированных по времени данных вместо разбивки по времени              151

Масштабирование перед разделением………………………………………………………………. 152

Заполнение отсутствующих данных статистикой из тестовой части…………….. 152

Плохая обработка дублированных данных перед разделением…………………….. 152

Групповая утечка…………………………………………………………………………………………………. 153

Утечка из процесса генерации данных………………………………………………………………. 153

Обнаружение утечек данных………………………………………………………………………………………. 154

Конструирование хороших признаков………………………………………………………………………………….. 154

Важность признаков…………………………………………………………………………………………………….. 155

Обобщение признаков………………………………………………………………………………………………….. 157

Итоги…………………………………………………………………………………………………………………………………………. 158

Глава 6. Разработка модели и ее автономная оценка……………………………. 161

Разработка и обучение модели………………………………………………………………………………………………. 162

Оценка ML-моделей……………………………………………………………………………………………………… 162

Шесть шагов по выбору модели…………………………………………………………………………. 163

Избегайте ловушки «хочу самое новое»……………………………………………………. 164

Начните с простых моделей……………………………………………………………………….. 164

Избегайте предубеждений при выборе модели………………………………………… 165

Оценивайте хорошую производительность в сравнении с предыдущими хорошими показателями производительности……………………………………………………………………………………. 165

Проанализируйте компромиссы………………………………………………………………… 166

Поймите предположения вашей модели……………………………………………………. 167

Ансамбли………………………………………………………………………………………………………………………. 168

Бэггинг…………………………………………………………………………………………………………………… 170

Бустинг………………………………………………………………………………………………………………….. 171

Стекинг………………………………………………………………………………………………………………….. 172

Отслеживание экспериментов и управление версиями…………………………………………….. 173

Отслеживание экспериментов…………………………………………………………………………….. 173

Управление версиями…………………………………………………………………………………………… 175

Отладка ML-моделей…………………………………………………………………………………………… 176

Распределенное обучение……………………………………………………………………………………………. 179

Параллелизм данных…………………………………………………………………………………………… 180

Параллелизм моделей………………………………………………………………………………………….. 181

AutoML………………………………………………………………………………………………………………………….. 183

Программная часть AutoML: настройка гиперпараметров…………………………….. 183

Аппаратная часть AutoML: архитектурный поиск и оптимизаторы обучения 185

Четыре этапа разработки ML-модели………………………………………………………………………… 186

Этап 1. До машинного обучения………………………………………………………………………… 187

Этап 2. Простейшие ML-модели…………………………………………………………………………. 187

Этап 3. Оптимизация простых моделей……………………………………………………………… 188

Этап 4. Сложные модели…………………………………………………………………………………….. 188

Автономная оценка модели…………………………………………………………………………………………………….. 188

Базовые конфигурации………………………………………………………………………………………………… 189

Методы оценки……………………………………………………………………………………………………………… 191

Тест на возмущение……………………………………………………………………………………………… 191

Тест на инвариантность………………………………………………………………………………………. 192

Тест на ожидаемые изменения……………………………………………………………………………. 192

Калибровка модели……………………………………………………………………………………………… 193

Оценка достоверности…………………………………………………………………………………………. 194

Оценка на основе срезов……………………………………………………………………………………… 195

Итоги…………………………………………………………………………………………………………………………………………. 198

Глава 7. Развертывание модели и совершенствование
ее сервиса прогнозирования…………………………………………………………………. 201

Мифы о развертывании ML……………………………………………………………………………………………………. 203

Миф 1: вы можете развертывать только одну или две модели за раз……………………… 203

Миф 2: если мы ничего не делаем, производительность модели
остается такой же…………………………………………………………………………………………………………. 204

Миф 3: нет нужды в частом обновлении модели………………………………………………………. 205

Миф 4: большинству ML-инженеров не нужно беспокоиться
о масштабировании……………………………………………………………………………………………………… 205

Пакетное прогнозирование или онлайн-прогнозирование?………………………………………………… 206

От пакетного прогнозирования к онлайн-прогнозированию……………………………………. 209

Объединение пакетного и потокового конвейеров……………………………………………………. 211

Сжатие модели…………………………………………………………………………………………………………………………. 213

Низкоранговая факторизация……………………………………………………………………………………… 214

Дистилляция знаний…………………………………………………………………………………………………….. 215

Прунинг…………………………………………………………………………………………………………………………. 215

Квантизация………………………………………………………………………………………………………………….. 216

ML в облаке и на периферийных устройствах……………………………………………………………………… 218

Компиляция и оптимизация модели под граничные устройства……………………………… 220

Оптимизация модели……………………………………………………………………………………………. 222

Использование ML для оптимизации ML………………………………………………………….. 224

ML в браузерах…………………………………………………………………………………………………………….. 227

Итоги…………………………………………………………………………………………………………………………………………. 228

Глава 8. Сдвиги в распределении данных и мониторинг……………………… 232

Причины сбоев ML-систем……………………………………………………………………………………………………… 233

Сбои программной системы………………………………………………………………………………………… 234

Сбои, характерные для ML…………………………………………………………………………………………. 235

Данные в производстве отличаются от данных при обучении……………………….. 235

Граничные случаи……………………………………………………………………………………………….. 237

Вырожденные петли обратной связи…………………………………………………………………. 238

Обнаружение вырожденных петель обратной связи……………………………….. 240

Исправление вырожденных петель обратной связи…………………………………. 240

Сдвиги в распределении данных……………………………………………………………………………………………. 242

Типы сдвигов данных…………………………………………………………………………………………………… 242

Ковариационный сдвиг……………………………………………………………………………………….. 243

Сдвиг меток…………………………………………………………………………………………………………… 245

Концептуальный дрейф……………………………………………………………………………………….. 245

Общие сдвиги в распределении данных…………………………………………………………………….. 246

Обнаружение сдвигов в распределении данных……………………………………………………….. 247

Статистические методы………………………………………………………………………………………. 247

Временные рамки окон для обнаружения сдвигов……………………………………………. 249

Устранение сдвигов распределения данных……………………………………………………………… 252

Мониторинг и наблюдаемость……………………………………………………………………………………………….. 254

Специфичные для мониторинга ML метрики…………………………………………………………….. 255

Мониторинг метрик, связанных с точностью……………………………………………………. 255

Мониторинг прогнозов………………………………………………………………………………………… 256

Мониторинг признаков………………………………………………………………………………………… 257

Мониторинг сырых данных………………………………………………………………………………… 259

Инструменты мониторинга………………………………………………………………………………………….. 260

Журналы……………………………………………………………………………………………………………….. 260

Информационные панели……………………………………………………………………………………. 261

Оповещения…………………………………………………………………………………………………………… 262

Наблюдаемость……………………………………………………………………………………………………………. 263

Итоги…………………………………………………………………………………………………………………………………………. 265

Глава 9. Непрерывное обучение и тестирование в производстве………….. 268

Непрерывное обучение…………………………………………………………………………………………………………… 269

Переобучение без сохранения состояния или обучение с его сохранением?…………. 270

Почему нужно непрерывное обучение?……………………………………………………………………… 272

Проблемы непрерывного обучения…………………………………………………………………………….. 274

Доступ к свежим данным…………………………………………………………………………………….. 274

Оценка…………………………………………………………………………………………………………………… 276

Алгоритмы…………………………………………………………………………………………………………….. 277

Четыре этапа непрерывного обучения……………………………………………………………………….. 278

Этап 1: ручное переобучение без сохранения состояния………………………………… 278

Этап 2: автоматизированное переобучение……………………………………………………… 279

Требования…………………………………………………………………………………………………… 280

Этап 3: автоматизированное обучение с сохранением состояния………………….. 281

Требования…………………………………………………………………………………………………… 281

Этап 4: непрерывное обучение…………………………………………………………………………… 282

Требования…………………………………………………………………………………………………… 282

Как часто надо обновлять модели?……………………………………………………………………………. 282

Ценность свежих данных…………………………………………………………………………………….. 283

Итерация данных или итерация моделей?…………………………………………………………. 284

Тестирование в производстве…………………………………………………………………………………………………. 284

Теневое развертывание………………………………………………………………………………………………… 285

A/B-тестирование…………………………………………………………………………………………………………. 286

Канареечный релиз………………………………………………………………………………………………………. 287

Тестирование чередованием……………………………………………………………………………………….. 288

Бандиты…………………………………………………………………………………………………………………………. 290

Контекстные бандиты как стратегия исследования…………………………………………. 291

Итоги…………………………………………………………………………………………………………………………………………. 293

Глава 10. Инфраструктура и инструменты для MLOps…………………………. 296

Хранение и вычисление…………………………………………………………………………………………………………… 299

Публичное облако или собственный ЦОД?……………………………………………………………….. 302

Среда разработки……………………………………………………………………………………………………………………. 305

Настройка среды разработки……………………………………………………………………………………… 305

IDE…………………………………………………………………………………………………………………………. 306

Стандартизация среды разработки……………………………………………………………………………. 308

От разработки к производству: контейнеры………………………………………………………………. 310

Управление ресурсами……………………………………………………………………………………………………………. 313

Cron, планировщик и оркестратор……………………………………………………………………………… 313

Управление рабочим процессом обработки данных………………………………………………… 316

ML-платформа…………………………………………………………………………………………………………………………. 321

Развертывание модели…………………………………………………………………………………………………. 322

Хранилища моделей…………………………………………………………………………………………………….. 323

Хранилища признаков…………………………………………………………………………………………………. 327

Создать или купить?…………………………………………………………………………………………………….. 329

Итоги…………………………………………………………………………………………………………………………………………. 331

Глава 11. Человеческая сторона машинного обучения…………………………. 334

Пользовательский опыт…………………………………………………………………………………………………………… 334

Обеспечение согласованности……………………………………………………………………………………. 335

Борьба с «преимущественно верными» прогнозами…………………………………………………. 335

Система бэкапов…………………………………………………………………………………………………………… 337

Структура команды…………………………………………………………………………………………………………………. 337

Кросс-функциональное взаимодействие между командами…………………………………….. 338

«Универсальные» специалисты по обработке данных…………………………………………….. 339

Подход 1: создание отдельных команд для управления процессами…………….. 339

Подход 2: специалисты по обработке данных управляют всем процессом…… 340

Ответственный ИИ…………………………………………………………………………………………………………………… 342

Безответственный ИИ: исследования инцидентов…………………………………………………….. 343

Пример 1: предвзятость автоматизированной оценки……………………………………… 344

Провал 1: постановка неправильной цели………………………………………………… 345

Провал 2: недостаточная оценка присущих модели предубеждений……. 345

Провал 3: отсутствие прозрачности………………………………………………………….. 346

Пример 2: опасность «анонимизированных» данных………………………………………. 347

Советы по созданию ответственного ИИ……………………………………………………………………. 349

Выясните источники искажений модели……………………………………………………………. 349

Поймите ограничения подхода, основанного на данных………………………………… 351

Оцените компромиссы между разными пожеланиями……………………………………… 351

Продумывайте всё заранее………………………………………………………………………………….. 352

Создайте карточки моделей………………………………………………………………………………… 353

Установите процессы для смягчения смещений………………………………………………… 354

Будьте в курсе тенденций ответственного ИИ…………………………………………………… 355

Итоги…………………………………………………………………………………………………………………………………………. 355

Заключение………………………………………………………………………………………….. 358

Предметный указатель…………………………………………………………………………. 359

Об авторе……………………………………………………………………………………………… 365

Об обложке…………………………………………………………………………………………… 366

Чип Хьюен

Чип Хьюен – основательница компании Claypot AI. Занималась разработкой систем машинного обучения в компаниях NVIDIA, Snorkel AI, Netflix, Primer, преподаёт в Стэнфордском университете курс CS 329S по проектированию систем машинного обучения.