ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:00
Представление лектора и знакомство с темой:
  • Лектор – Лебедев Михаил, архитектор, имеющий опыт в системном администрировании, разработке, преподавании и data science.
  • Преподавательская деятельность осуществляется в Высшей школе экономики.
  • Вебинар посвящён проектированию архитектур сервисов искусственного интеллекта и доступным инструментам.
00:02:40
Архитектура обычных сервисов и отказоустойчивость:
  • Рассматриваются принципы построения отказоустойчивости на физическом уровне: дублирование оборудования, RAID-массивы, резервирование источников питания.
  • Показана необходимость обеспечения высокой доступности сервисов путём использования дублирующих серверов и технологий репликации данных.
00:12:45
Логическая архитектура и виртуализация:
  • Переход от физического уровня к логическому: использование гипервизоров и контейнеризации для повышения эффективности использования ресурсов.
  • Преимущества виртуализации и контейнеризации: экономия ресурсов, независимость приложений от аппаратуры, лёгкость перемещения и масштабирования.
00:17:27
Микросервисная архитектура и Hadoop:
  • Экосистема Hadoop и распределённые вычисления: подход MapReduce, параллельная обработка данных, отказоустойчивость.
  • Микросервисная архитектура: преимущества разделения монолитных систем на независимые компоненты, гибкость и отказоустойчивость.
00:26:26
Нейронные сети и эмбеддинги:
  • Принцип работы нейронных сетей: преобразование входных данных в числовые представления (токены и эмбеддинги).
  • Использование эмбеддингов для обработки текста, изображений и звуков.
00:38:22
Рекуррентные нейронные сети и трансформеры:
  • Рекуррентные нейронные сети (RNN): LSTM, GRU, способность сохранять контекст предыдущих данных.
  • Трансформеры: архитектура, основанная на механизме внимания, позволяющая эффективно обрабатывать длинные последовательности данных.
00:54:42
Практическое применение моделей искусственного интеллекта:
  • Демонстрация практического применения моделей глубокого обучения: классификация изображений, обнаружение объектов, сегментация фона.
00:58:55
Инфраструктура для работы с искусственным интеллектом:
  • Необходимость масштабируемой и отказоустойчивой инфраструктуры для поддержки современных моделей искусственного интеллекта.
  • Балансировка нагрузки, использование GPU, квантование моделей для оптимизации производительности.
01:13:39
Направления и профессии в области машинного обучения:
  • Основные направления деятельности специалистов по машинному обучению: дата-инженеры, ML-инженеры, бизнес-аналитики, исследователи.
  • Важность подготовки и разметки данных, адаптации существующих моделей под конкретные задачи компаний.
01:15:27
Проектирование архитектуры корпоративных AI-систем:
  • Пример вакансии, требующей навыков проектирования архитектуры корпоративных AI-систем.
  • Указание на важность интеграции с существующими сервисами и базами данных, опыта работы с GPU и пайплайнами обработки естественного языка (NLP).
01:19:16
Презентация учебного курса:
  • Программа курса включает фундаментальные аспекты архитектуры, стратегии планирования, обеспечение качества и безопасности, изучение инфраструктуры и шаблонов проектирования.
  • Возможность выполнения проектной работы, которая поможет продемонстрировать приобретённые навыки и повысить конкурентоспособность на рынке труда.
0: Значит, сегодня у нас с вами открытый урок по курсу. Я архитектор. Очень важная сейчас профессия. Меня зовут Лебедев Михаил. И сейчас я вам расскажу, мы с вами познакомимся и пройдём.
1: Это описание. Так значит, запись у нас с вами идёт. Вы меня слышите? Значит, зовут меня Лебедев Михаил. Я работаю руководителем управления, и мой жизненный background состоит из того, что я был долгое время системным. Администра.
2: Потом развивался в различных направлениях виндовс, линукс, сетевое оборудование, телефония и так далее, и это позволило мне перейти на позицию системного архитектора дальше я продолжил развиваться в этом же направлении.
3: Значит, понял, что мне необходимо знания руководителя проектов, там, о, изучал техническое писательство. Мне нужно было для того, чтобы писать документацию. Разработческие навыки. Мне нужны были для того, чтобы мини сервисы писать. Вот, и
4: И, значит, с 2018 года я перешёл в data science значит, мой переход длился на самом деле около 3 лет я, будучи системным архитектором, изучал машинное обучение, проходил курсы и решал какие-то задачки, проходил соревнования.
5: И в итоге мне удалось бесшовно перейти на позицию датасаентиста, и с 22 года я вот занимаюсь преподавательством, я являюсь доцентом высшей школы экономики, преподаю в отпуске, если захотите со мной пообщаться. Вот.
6: Мой telegram на экране. Значит, пишите, пожалуйста, ваши вопросы в чатике. Я по мере возможности буду их отвечать, чтобы если не сбиться, то, может быть, не сразу на них отвечу. Вот запись вебинара придёт.
7: Вы потом сможете на вк это посмотреть эту запись. Значит, сегодня мы с вами обсудим проектирование архитектур сервисов искусственного интеллекта, познакомимся с доступными инструментами, значит, архитектуру
8: На примере архитектуры ллм посмотрим, пообщаемся про курс и отрефлексируем потом нашу с вами встречу.
9: Так, если есть возможность, напишите о себе, чтобы я, может быть, успел в ходе встречи как-то подкорректировать или ответить на какие-то ваши специфичные вопросы. По тому, по вашему пути, фактически вот я был системным архитектором, стал.
10: И сегодня мы как раз и на этом курсе, и на этой лекции совмещаем эти 2, 2 ипостаси. Так, значит ну давайте поговорим прежде чем говорить про архитектуру искусственного интеллекта.
11: Сервис искусственного интеллекта. Давайте поговорим сначала про обычную архитектуру, потом поговорим про искусственный интеллект, а потом это объединим в архитектуру искусственного интеллекта. Значит, ну небольшой экскурс, значит вот так выглядят физические сервера и они серве.
12: И с давних времён в них существует некоторое дублирование на верхнем рисунке. Вы видите, там 4 жёстких диска вставлено, значит, внизу, на нижнем сервере, у нас с вами 2 блока.
13: Питания. Ну, если вдруг вы не видели ещё, как они выглядят в стойках, это стоечные сервера. Соответственно, наши с вами цоды построены должны быть таким образом, чтобы были поданы 2 ввода электричества, 2 ввода питания.
14: Этого интернета, телефонии и так далее. Ну, чтобы у нас было резервирование, ну, там, тир 3, допустим, формат нашего цода. В общем, что мы здесь ещё видим, что, соответственно,
15: Если у нас пропадает электричество или ломается 1 из блоков питания, мы просто наживую вытаскиваем его и вставляем обратно, и у нас все работает. Ну вот таким образом мы на физическом уровне обеспечиваем отказоустойчивость, потому что сегодня мы как раз про это и будем тоже говорить.
16: Про отказоустойчивость, катастрофоустойчивость и так далее. Значит, здесь вы видите материнскую плату внутри. Значит, здесь вот места под 2 процессора, 2, как сказать, 2 блока для
17: Оперативной памяти и так далее. Здесь ещё там для raid, серверов, разъёмы и так далее. Значит это все служит для того, чтобы мы не потеряли информацию, которая у нас с вами заложена в наших дисках. На, на
18: Наших серверах на нашем сервисе. Значит, обратите внимание, у нас с вами там было 4 диска в верхнем сервере. Ну вот простой пример. Рассмотрим. Вот диск 0 1, 2 4, это вот 4 диска физических
19: Нашем сервере, значит, как располагаются данные, мы с вами дублируем наши с вами данные. Вот файл, a1, ну или там блок с файлами. A1 он у нас задублирован на 2 дисках. Также вот файлы, a2 тоже задублированы, соответственно, что
20: Понимаем, что если диск a1 выйдет, если диск 1 выйдет из строя, то у нас всегда есть копия наших данных на на 2 диске, ну и соответственно вот они в паре объединяются в raid 1 в зеркало все вместе они.
21: Объединяется в raid 0, ну или в raid 10 таким образом мы достигаем отказоустойчивости на физическом уровне, если жёсткие диски вышли из строя и есть 1 очень хороший ну уже давнишний Ван.
22: Это 5 рейд с хоп. Он позволяет нам из 4 дисков всегда иметь возможность вынуть 1 из 4 или если он у нас сломается, мы его физически вытащим из сервера и потом
23: Вставим новый, сделаем там инициализацию и опять данные размажутся по всем 4 дискам, они не потеряются. То есть сервер не нужно будет выключать. Это вот 1 из таких видов.
24: Дисков, чтобы не было потери данных. Ну тоже видно, что данные каким-то образом распределяются. Видите, диски не полностью заняты для того, чтобы всегда была возможность перераспределить данные между ними. Теперь такой небольшой
25: Такой экскурс про построение высокой доступности. Значит, давайте представим себе, что у нас есть сервер или там рабочая станция и звёздочкой обозначена наша, ну пускай это будет как будто бы экселевский
26: Файлик или 1 эсный файлик с нашей зарплатой. То есть то, что нам очень важно, нам нужно это сохранить. Значит, ну, мы понимаем, что если во время выдачи зарплаты, значит, этот сервер сломается, то мы её не получим зарплату. Поэтому, что, м,
27: Делаем как айтишники, мы делаем дублирование, мы ставим ещё 1 сервер и делаем некоторую репликацию наших данных. То есть этот файлик переписываем с какой-то частотой. То есть вот у нас происходит дублирование информации, есть свои плюсы, минусы.
28: Значит, ну во первых, это дёшево, во вторых, нужно все-таки какие то копии делать для того, чтобы они были консистентные. Если внесли изменения, то надо понимать, где сейчас, значит, на каком сервере правильные, да.
29: И так далее. В общем, как бы 1 база, 1 базовый случай, значит, теперь вступает в, как это сказать, то, значит, появляется ещё 1 сервер, называется, видно, сервер.
30: Server свидетель так называемый он нужен для того, чтобы определить при допустим, перезагрузке у нас выключили электричество и нужно определить, какой из серверов сейчас является главным. Значит, если, допустим, 1 сервер был
31: Главный, a2 был резервный, то после перезагрузки 1, допустим, долго восстанавливается, 2 поднялся, и он может посчитать себя главным. И тогда у нас произойдёт задублирование данных, то есть какой-то сервис по пользователь, допустим, того же там.
32: Клиенты подключаются к 1 с допустим, то они попадут на 2 сервер и начнётся дублирование данных. Поэтому есть сервис, свидетель, который у которого спрашивают во время загрузки сервера, кто является главным
33: Таким образом, мы всегда знаем, кто, кто из них главный. То есть они не загрузятся, пока не дождутся загрузки, значит, этого сервера свидетеля. Ну и здесь у нас вступает понятие как высокая доступность. Это вот у нас быстрый перезапуск серии.
34: На другом сервере при сбое. То есть вот мы всегда можем 1 сервер, допустим, перезагрузить. Если нам нужно обновление какое-то сделать или он сломался, то у нас всегда есть резерве 2. Теперь нам не очень удобно вот это копирование.
35: Туда сюда файлов, и мы можем сделать какой-то сетевое хранилище, какую-то дисковую полку приобрести и туда перенести наши файлы и наши сервера будут подключаться к этой дисковой полке. Файлы будут
36: На физическом уровне защищены все. Теперь у нас 2 сервера. Мы можем спокойно переключать наши сервисы между ними. Допустим, если у нас настроена отказоустойчивость, то мгновенные переключения, позво,
37: Нам, в общем, сделать так, чтобы сервис был, значит, доступен. Но обратите внимание, все-таки у нас некоторая избыточность у нас здесь получается, то есть мы тратим уже в 3 раза больше денег, чем у нас было в 1 варианте теперь
38: У нас на самом деле это была не самая лучшая ситуация. Нам нужно, чтобы ещё более отказоустойчивая ситуация была, например, какая у нас может быть ситуация, если у нас сервер 1, мы сейчас с вами перезагру.
39: Для того, чтобы сделать на нём какое-то обновление, то у нас остаётся там на какое-то, может быть продолжительное время. 2 сервера в работе это 2 и 3. И так может оказаться, что сервер 2 сломался. Ну такое
40: Возможно, тогда у нас остаётся всего сервер 1 под номером 3, который будет нести на себе всю нагрузку и но при этом все сервисы будут работать ну, может быть чуть чуть в деградированном режиме или как-то там, значит,
41: Во всяком случае, это даст нам возможность починить 2 сервер, перезагрузить наконец то 1. И чтобы они у нас всегда были вот в отказоустойчивой конфигурации. И последний у нас с вами принцип отказ.
42: Устойчивость это катастрофоустойчивость, это когда мы разносим наши с вами сервисы в разные города или в разные цоды для того, чтобы если где-то там условно в каком-то городе или части города.
43: Прикопают интернет кабель и даже 2 их, то тогда полностью сот не будет доступен наш сервис. Допустим, клиент банк не будет доступен. Это проблема, поэтому мы с вами
44: Сейчас попробую открепить. Мы, мы с вами
45: Ладно, тогда у нас сервер будет сервис наш работать, продолжать работать. И это важно, если мы строим вот такую вот инфраструктуру с высокой
46: Доступностью. То есть, ну что мы здесь видим, что архитекторы должны рассчитать количество вот этих серверов, их их параметры сделать там какой-то определённый запас не больше, не меньше для того, чтобы
47: Бюджет не раздувать, ну и необходимые параметры рпо и рто, которые здесь написаны. Целевое время восстановления и целевая точка восстановления, чтобы они соответствовали тем требованиям, которые нам предъявляли. То есть вот рто,
48: Это максимальное время, в течение которого система может быть недоступна. То есть, ну, грубо говоря, там 3 минуты мы можем подождать, пока клиент банк не работает. Ну, какой-то мини сбой, может быть, клиенты не заметят. Вот.
49: Целевая точка восстановления, это, допустим, все транзакции, которые делали клиенты за эти 3 минуты, они не должны пропасть. То есть мы должны обеспечить таким образом, чтобы там минимальный промежуток времени о потере.
50: Данных. Ну, либо если сервис не критичный, то мы сможем восстановить его какими-то другими способами, то ррпо, может быть там неделя, день, час и так далее. Так и теперь немножечко давайте перейдём от как бы
51: Мы сейчас с вами рассмотрели физическую парадигму, значит, как бы разделение ресурсов. Теперь давайте мы её посмотрим на логическом уровне. Ну, раньше, в самом начале у нас
52: Была какая-то инфраструктура. В данном случае это сервер, на котором мы ставили операционную систему. Ну, допустим, пускай будет windows, linux и так далее, и на нём было некоторое приложение. В данном случае апп 1. Это, ну, для простоты возьмём какой-нибудь
53: 1 эску, где вот наша зарплата считается дальше, так как у нас 1 ска не тратит ресурсы всего сервера. Нам хотелось бы их переиспользовать, чтобы не тратить деньги, то мы можем на 1
54: Системе поднять несколько приложений, 1 с почтовую систему домен и так далее. И возникают проблемы. Если нужно будет перезагрузить, допустим, почтовый домен, он может после там переустановки обновлён.
55: Или по каким-то причинам, то он может за собой заставить перезагрузить весь сервер вместе с операционной системой. И тогда перезагрузятся и те наши 2 сервера, которые вот эти 2 сервиса, которые там тоже крутились.
56: Это не очень хорошо, потому что наши эти сервисы могут быть нужны, они не нужно их прерывать. Поэтому, с 1 стороны, мы экономим ресурсы, мы раздаём вот по трети всех наших ресурсов, 3 сервисам, но есть проблема с перезаг.
57: Тогда придумали следующий вариант. Это у нас с вами то, что было. Мы переходим сюда, значит, придумали гипервизоры, то есть некоторую программу, которая является посредником между железом и
58: Операционными системами и операционная система, которая поднимается на эти гипервизоре, она понимает, она думает, что у неё под ней находятся физические ресурсы. Соответственно, мы в настройках гипервизора выдаём, ну,
59: Количество этих виртуальных уже ресурсов это будет cpu процессор, память, жёсткий диск и так далее и управляем ими, ну и вот допустим эти гипервизоры.
60: Это и гиперви цитрикс, и kvm ну вот.
61: Хорошие, в общем, продукты, которые позволяют перевозить виртуалки наживую, перезагружать, создавать и так далее. И удобно раздавать ресурсы. При этом у нас под этой инфраструктурой может быть несколько
62: Серверов и гипервизор управляет сразу несколькими серверами и при этом даже управляет серверами в разных городах. И мы можем виртуалки переносить между этими городами наживую, ну, определёнными способами.
63: Так, ну в общем, мы с вами поговорили, и здесь тоже имеет значение, что у нас там лицензии, там мы можем сэкономить на лицензиях, расшаривая таким образом ресурсы. Ну и плюс, если у нас какое-то теперь приложение нужно будет перезагрузить, то оно может перезагру.
64: Грузиться вместе с гостевой операционной системой, но при этом, значит, все остальные сервисы не пострадают. Ну и соответственно, мы уменьшаем стоимость владения данным сервисом и следующий это
65: Как бы я для себя как бы отметил, что это там виртуализация для взрослых. Вот, а есть контейнеризация, когда мы с вами ставим на какую-то инфраструктуру определённую операционную систему.
66: Её ставим там условный docker или кубернетис, то есть некоторую прослойку для контейнеризации. И теперь у нас каждый сервис работает внутри тоже такого. Ну, я называю виртуалки, потому что я ближе к системам архитек.
67: Ну, это такие поды, это контейнеры, которые создаются на лету, там, в оперативной памяти с минимальным, там, записью на жёсткий диск. Таким образом, они работают очень быстро, они быстро загружаются, легко.
68: Сохраняются, делаются изменения. В общем, очень гибкая на самом деле система. Вот. Но чуть чуть попроще, чем вот то, что сделано гипервизорами платных версий.
69: Так, коллеги, если будут вопросы, пишите, я пока пошёл дальше. Теперь я бы хотел перейти вот раз уже логически мы можем перейти от физической инфраструктуры, от инфрастр.
70: Тура виртуально виртуализации к серверам, к понятию хадупа.
71: Это, ну, целая экосистема тоже имеет под собой жёсткие диски, процессоры, серверы. Но чем тоже хороша эта экосистема? Тем, что у нас с вами может быть, она очень сильно удобно масштабируема. То есть мы
72: Легко создаём новые, можем добавлять новые дешёвые серверы. Тоже есть некоторый оркестратор, который всем этим управляет, и
73: Ну, сейчас все машинное обучение, все крупные фирмы используют ходу для того, чтобы размещать там свои данные, производить там какие-то расчёты и обучать свои модели. Ну, мы не будем сейчас касаться, какие тут есть.
74: Программные продукты немножко только коснёмся. Вот технологии редьюс, которая тоже в нашей парадигме отказоустойчивости имеет значение. Значит, у у хадупа есть
75: Распределённая файловая система называется фс, которая примерно как вот похожа очень на ту инфраструктуру, которую я вам только что описывал. То есть есть какие-то вот жёсткие диски, дата нот это у нас какой-то сервер у него есть.
76: Определённые ресурсы и существуют определённые программы, которые позволяют распараллеливать задачи. Это у нас с вами происходит. Ну, сейчас расскажу, значит, вот
77: Примерно как выглядит сервер хадупа у него тоже все задублированно вот допустим датаноды это вот та система hd жёсткого диска, файл, файловая система, где находится наш с вами файл.
78: То есть можно добавлять эти датаноды, значит, на эти ноды у нас будут записываться новые файлики, реплицироваться, как я вам в этом в рейде 5 хоп показывал. То есть данные всегда имеют там минимум 3 реплик.
79: Кации, то есть на 3 разных серверах дата нодах находятся наши файлики. Если там 2 ноды выйдет из строя, то у нас всегда на 3 есть резервная копия. Вот у нас есть объект
80: Для входа там spark, master spark вокеры, которые тоже балансируют нагрузку и дополнительные серверы для того, чтобы управлять в общем всем этим зоопарком.
81: Вот, и что здесь стоит подчеркнуть в этой парадигме это мепредьюс, это когда мы с вами технология мепредьюс, когда мы какие-то данные, ну большой файлик, допустим, 1 на 1 гигабайт каких-то текстовых файлов.
82: Числовых и нам нужно найти, не знаю, там максимальное число какое-то среди этого, там 5 миллиардов, не знаю, допустим, строк, то тогда что мы можем сделать, мы можем разбить, значит, с помощью
83: Технологии мэпп разбить этот файл, там пускай будет терабайт, допустим, на, на кусочки возможно уже на эти кусочки эти кусочки уже находятся на наших дата нодах. То есть у нас есть то
84: Серверов на каждом из этих 100 серверов, допустим, там, не знаю, по 100 мегабайт находятся вот эти куски файлов. То есть, грубо говоря, даже не надо нам писать на эти сервера отдельно наш файл, он, возможно, уже так удобно там разложен, что мы с помощью
85: Технологии редьюс. На каждом из этих 100 серверов. В этих 100 мегабайтах мы найдём максимальное значение, а потом с помощью там итогового итогового
86: Редьюса мы найдём максимум из тех максимумов, что мы шли, нашли до этого. То есть, в общем, мы наша парадигма, мы разделили файл, либо он уже был разделён на большое количество кусочков. Каждый сервер отдельно со своими ре.
87: Занимается задачей по поиску Нужных нам данных. Потом все это агрегируется с помощью технологии меридью и выдаётся окончательный результат. Таким образом, такая вот Дешёвая система параллелизации и
88: Легко масштабируемая это то, что сейчас активно используется там в банках и везде в компаниях. Ну вот ещё хотел вам показать рейтинг баз данных, который был
89: Актуален, ну, на июнь 25 года, когда я делал этот скриншот, то, что он там сейчас недоступен без технологии доступа. Оракал, был на 1 месте, там по так далее. И вот, допустим, redis очень
90: Такая шустрая, хорошая, простенькая база данных, которая вот с 6 места немножко упала. Вот, в общем, вот такие вот такое распределение баз данных, которые сейчас его рейтинг, в общем, который лучше
91: Или хуже теперь?
92: Ещё немножко все-таки говорим про инфраструктуру, пока у нас с вами есть понятие там больших сервисов или больших вот этих ллм, систем, языковых моделей. Вот, но, как мы уже поняли,
93: Что дробление нашего большого сервиса даёт нам некоторые плюсы таким образом, что мы можем ресурсы более оптимально использовать там какие-то перезагрузки делать более оптимально. Поэтому микросервисная архитектура сейчас тоже попу
94: И её тоже легко масштабировать. Значит, ну вот если на такой рисунок посмотреть, у нас есть некоторая вот такая монолитная система, где у нас есть, допустим, 5 каких-то сервисов в 1, в 1 этом
95: В 1 как бы процессе, вот, и есть микросервисы, которые разделены, и мы можем
96: На разные серверы ставить не обязательно большое количество этого монолита, ставить, который тяжёлый, который, значит, может быть хорошо работает, но тратит больше ресурсов. Мы можем использовать микросервисы для того, чтобы
97: Более оптимально использовать наши ресурсы. Ну и вот есть некоторые там плюсы и минусы, что да, у есть и простота, и гибкость, и высокая отказоустойчивость, но вот есть и проблема сложности тестирования.
98: И иногда даже и потребление ресурсов растёт, и сложная коммуникация. Нужно хорошо понимать, где какие сервисы установлены. Вот теперь давайте чуть чуть перейдём к тому уже ближе к теме. Это то
99: Что, какие архитектуры у нас с вами существуют, которые мы должны рассчитывать и понимать их. Допустим, вот мы с вами пришли на какую-то работу и там работает система, рексис, рексис это рекомендательная система. Вот она доста.
100: Сложная, она тоже состоит из сервисов микросервисов, что есть какая-то модель, на неё приходит какой-то запрос, потом есть определённые индексы, заранее посчитанные определённые какие-то фильтры, то есть питоновский
101: Библиотеки скрипты, которые занимаются вот поиском, фильтрацией, скорингом и сортировкой для этой скоринговой системы. То есть вот наша задача, допустим, сделать так, чтобы
102: Мы подобрали необходимую инфраструктуру для того, чтобы этот сервис значит реализовать и чуть более сложная система здесь говорится про вот эти вот gpu.
103: Видеокарты, системы для параллельного расчёта нейронных сетей. То есть вот здесь показан пример, что достаточно сложные системы сейчас, которые мы должны будем обсчитывать и рассчитывать.
104: Их характеристики в зависимости вот от гпо, от каких-то дополнительных улучшений, которые достаточно часто меняются. То есть вот эта сфера сейчас, про которую мы говорим, курс по которому мы с вами
105: Смотрим нашу с вами лекцию, он достаточно быстро меняется, очень гибкий и нужно быть в тренде для того, чтобы, может быть, переделывать инфраструктуру.
106: Быстро под под эти меняющиеся сервисы. Теперь давайте немножко перейдём к практике того, что что же такие за сервисы искусственного интеллекта, с которыми придётся работать
107: Infrastructure, под которых мы с вами готовим. Значит, ну, сейчас больше всего развивается обработка текста, но я бы хотел вам, чтобы лучше вы понимали теорию, с чем придётся столкнуться это понятие.
108: Эмбеддингов. То есть когда мы говорим про обработку текста, все модели, даже те, которые обрабатывают изображение или звук, они все работают с числовыми данными. То есть мы каким-то образом должны преобразовать
109: Картинки, звуки, тексты в число. Вот здесь показано пример преобразования изображений. Это вот свёрточная сеть, которая, на которую мы подаём картинку. Вот она слева здесь показана
110: Она проходит вот здесь вот по, по Такому некоторому пути. Здесь есть свёрточные слои, слои Макс пулинга, но здесь не так много уникальных слоёв. Вот карвон, Макс пулинг, дэнс и дура. Ну, на самом дел.
111: 4, 4 вида сетей. Ну просто, если вы не знакомы, быстренько расскажу, что когда мы с вами подаём картинку, допустим, размерности 224 на 224, даже если 1 канал будет серый, градации серого.
112: То мы их подаём на нашу нейронную сеть, у которой есть определённое количество входов. Нейронная сеть это сеть, состоящая из большого количества нейронов в определённой последовательности. У неё есть там входные слои, скрытые слои, выходные слои.
113: Вот, в частности, входной слой это вот этот слой, 1 выходной слой, это у нас слово target написано все остальные слои это скрытые слои, и вот эти вот слои, вот эти нейроны, они определённым образом реагируют на нашу картину.
114: И если во время обучения они запоминают в весах этих нейронов, они запоминают какие-то числовые значения, вещественные благодаря
115: Которым мы фактически, если посмотреть на эту картинку, мы с вами изображение размер двухмерной размерности, мы его вытягиваем. Если вы заметите, оно вытягивается в размерность. Вот в данном случае 1000
116: 1000 классов, то есть любое изображение размерности 224 224. Ну пускай будет 3 канала тоже, оно в итоге потом сойдётся к 1 числовому вектору числовой вектор это
117: Ну, это на самом деле тензер, потому что сейчас все тендерами называется. Это, если говорить про питон, это тип, лист, значит, 1000 каких-то вещественных значений в итоге, потом с помощью там определённого слоя, который называется
118: Мы из этих 1000 вещественных значений получаем некоторую вероятность какого-то класса. То есть у нас есть 1000 классов, мы знаем, что вот на 1 месте у нас класс, машина, на 2 месте класс слон, на 3 месте у нас класс, дом.
119: И таким образом, у нас с вами сеть работает таким образом, что подавая сюда изображение определённого класса у нас в итоге вот на этом вот последнем векторе тензере или бединге размерности 1000
120: В определённом месте под определённым индексом будет самое большое число, но оно в сумме будет равняться единице, но это может быть, допустим, самое большое число будет 0 1. Просто все остальные числа тоже меньше чем 0 1, но в сумме они дадут
121: 1000 единичку. Так вот, вот на том индексе, где у нас самое большое число, это значит тот класс у нас с вами и, значит, на входе. Так, ну у нас это полностью соответствии записано при обучении сети, то есть
122: На нулевом месте. Ладно, под индексом 1. У нас с вами машина под индексом 2, там телевизор, потом слон и так далее. Таким образом, мы всегда знаем, как мы из изображения получим класс. Так вот.
123: Ещё раз хотел бы здесь остановиться как раз на этом рисунке, что пропуская другое какое-то изображение через любое изображение, через эту сеть, мы в итоге получаем 1000 вектор длиною 1000 каких-то значений, ну,
124: Потом они превратятся в вероятность, но пока это просто какие-то вещественные числа, то есть, допустим, минус полтора, 0 15 и так далее. То есть какие-то числа, 1000 каких-то значений, ну и значит допустим, мы с вами хотим решать задачу.
125: Нам нужно сделать сервис, который позволит нашим работникам проходить, значит, на предприятие, не прикладывая пропуск, а по фотографии, ну, в смысле, по, по изображению тогда.
126: По идее, для того, чтобы обучить такую сеть, нам нужно было бы по 1000 фотографий каждого сотрудника попросить, где они там в хорошем настроении, в плохом, с разными причёсками, с усами, без Усов, с очками, без для того, чтобы, в общем, обучить нашу с вами
127: Сетку загорела и так далее или нет. Но, значит, эту задачу можно решить проще, если мы возьмём с вами уже предобученную сеть, а в интернете уже достаточно много предобученных сетей, у которых есть
128: Определённый вход, то есть мы с вами входное изображение должны будем обрезать. То есть наша камера должна будет выдать на вход нашей сети. Вот эта размерность 224 на 224 наших 2 людей. Ой, нашего человека, вот этого, который хочет войти в нашу компанию.
129: И прогнав его изображение через эту сетку, мы получаем какой-то вот этот вот вектор длиною 1000. Так вот, если мы запишем вот 1 раз мы этого человека прогнали, взяли этот вектор, ну или хотя бы там 10 фотографий просто взяли среднее.
130: Какое-то значение, то у каждого человека нашего, в нашей конторе будут все вектора разные абсолютно. Ну где-то чуть чуть похожи, но они будут разные. Просто у них длина будет 1000 вот эта, и если
131: Пришёл сотрудник, допустим, сбрил усы, то мы берём фотографию человека без Усов этого мужчины, прогоняем через эту сеточку нашей с нашим сервисом, получаем этот вектор длиною 1000.
132: И он и сравниваем этот вектор с теми векторами, которые у нас есть в базе. Так вот, даже если человек сбрил усы, или одел очки, или там сменил причёску, все равно вот косинусным расстоянием вектор.
133: Вот этого в базе человека и того, ну, соответственно, его же, который пришёл на работу, они будут ближе. То есть, если мы возьмём там косинусное расстояние, оно будет меньше, в общем, ну, там какой-то порог тоже можно подобрать, чтобы там чужой человек.
134: К нам не вошёл, потому что он будет не похож ни на кого из наших сотрудников. В общем, вот таким образом мы с вами меняем представление нашего изображения, звука или текста из 1
135: Пространство, пространство длиною размерностью 1, допустим, на 1000. То есть вот это принципиально. Хотел бы в этом месте рассказать
136: Ну, это потому, что вот с этими эмбедингам работают наши нейронные сети и с которыми мы делаем архитектуру. Дальше ещё про my вам хотел сказать, что значит так, как мы
137: Значит, не работает Лемка с с с текстом, то тексты у нас делятся на токены токен это не тот, за который. Ну, хотя, да, тоже.
138: За которые мы с вами, возможно, платим токен. Изначально это было, допустим, по пробелам разделённое предложение, это было слово, ну, когда убрали запятые, там знаки препинания и так далее, там стоп, слова какие-то лишние, то токеном это было просто.
139: Какое-то слово. Но сейчас, обрати внимание, уже отошли от этой парадигмы, и теперь токеном может являться часть слова. Вот здесь показано разби, разби.
140: Предложение жители Уфы вечером 20 марта заметили редкое явление вот видите, с точкой, то есть это от open eye, значит токенизатор, то есть это устройство.
141: Алгоритм, который делит на токены, значит, что что такое токены, в общем, делит на кусочки и каждому кусочку присваивает какое-то уникальное число. То есть вот буква ы она имеет вот такое вот уникальное значение. И тогда с этим значением и будет работать наша лм сеть.
142: В общем, это вот выпущенная там год назад Отто i сетка грог называется для, обратите внимание, для английского языка она не так сильно делит, значит, наши слова, ну, на английском языке.
143: Видите, она целое слово содержит. Ну, потому что в английском слове меньше значит меньше слов уникальных. Ну и более предпочтительнее. Та сетка была, видимо, на больших текстах обучена, но и русский язык тоже работает, в общем.
144: Здесь я хотел вам показать, что мы текст преобразуем в число следующим образом мы делим на какие-то токены. Это обучаемая система. То есть вот почему вот именно так разделилось или не так это все было при обучении сети, она могла
145: Выбрать и редг, или ое, допустим, соединить вместе это, ну, этим параметром мы не играем просто количество уникальных слов. Ну, здесь вот видно, допустим, что максимальное значение примерно где-то 130000. Ну так и есть вот.
146: В этой системе грок около 130000 уникальных значений. Там и иероглифы есть, и цифры, и буквы. Обратите, видите, цифры имеют маленькое значение, потому что они более часто встречаются
147: То, что вот почему-то точка у нас с вами в конце оказалась. Ну ладно, так ну в общем мы поговорили с вами значит, что токен мы превращаем в число и также мы предложение можем превратить в эмбеддинг то что
148: Ну я вот здесь вам показывал, то есть какой-то вектор и уже наша с вами сетка будет работать с этим вектором. Так, ну ещё вот 1 из видов кодирования. Ну, в принципе, то, что мы только что обсудили, это когда мы какие-то токены кодируем числами.
149: А потом эти числа подаём в нашу сетку, но не только числа, а ещё вот условные мини эмбеддинги в данном случае размерности 2. То есть вот это вот arm, это вектор вот этот вот как я вам говорил, 1000 вот примерно 1000 вот таких значении.
150: Только вот в эту, в эту сторону, здесь в данном случае показано размерность 2. То есть вот какие-то числа они тоже настраиваются во время обучения, какой именно вот токен будет, какой вектор иметь, потому что, по идее,
151: Значит, более близкие токены по смыслу должны также и семантически близкие Косе расстоянием иметь и вектора вот эти вот. Но это, как сказать, нужно проверять, в общем, внутри сети, ну и
152: И потом вот эти вот слова, мы их превращаем с вами вот в эти токены, потом с помощью нейронок, значит вот мы, как бы, видите, вытягиваем из двухмерных последовательностей в одномерную и здесь у нас в конце там какой-то
153: Класс. В данном случае, допустим, это положительный класс. То есть это предложение, этот твит, допустим, этот положительный, ну, добрый, а этот отрицательный, значит, твит, ну,
154: Позволяют это делать. Значит, то, что я вам показал сейчас сеть там условно простая. Ещё более сложные сетки у нас с вами появились. Это так называемые рнн, это сети с обратной связью, они
155: Что в них интересного, что когда мы на них на вход что-то подаём, они делают сигнал на выходе, дают сигнал на выходе, но при этом автоматически, допустим, когда мы подаём слово, хотим перевести
156: И там i love you, то когда мы подаём ай, значит, i превращается в как, ну, мы уже меняем его на некоторый вектор, на некоторые вот значения, допустим, как вот здесь вот мы ai заменили вот на такое значение и подали.
157: Это наш нейрон, то когда мы подаём уже следующее слово там райтинг или love, то на выходе нашего нейрона, так как у него есть обратная связь, то у него образуется супер
158: Позиция этих 2 слов. И таким образом, на выходе он уже имеет такой, как бы, ну, суперпозицию 2 тех слов, которые в него вошли. Таким образом, он помнит предыдущее слово и текущее слово, и таким образом, это позволяет
159: Запоминать приложение и лучше обрабатывать.
160: Последовательности. Вот есть свои проблемы в этом, что нельзя распараллелить, что затухает градиент при обучении. Вот, ну, эти проблемы обходят какими-то разными способами. В общем, значит, рнн это простая сеточка, когда мы просто
161: Подаём сигнал, вот это зацикливаем и он запоминает предложение. Вот есть сеть лстм, это так называемая лонг шорт тайм мемори, то есть
162: Долгая краткосрочная память здесь что здесь интересного? Здесь также вот эти кубики это настраиваемые веса. То есть это какие-то числа здесь подбираются таким образом допустим чтобы вот здесь вот видите фагэт забывающий гей
163: Когда сигнал здесь проходит, здесь умножитель стоит. Если вот этот сигмоид выдал нолик, то тогда сюда пришёл 0 и значит, сигнал здесь домножил на 0 и пропал. Таким образом, допустим, пришла у нас точка. То есть это предло.
164: Предложение, прошлое закончилось. Все. Нам больше не нужно в долговременную память накапливать слова. Тогда мы просто вот с помощью вот этого гейта забудем предыдущее предложение, все закончилось и начнём.
165: Накапливать новые предложения. Ну а здесь вот входное воздействие обрабатывается, ну и тоже регулируется. Как много данных мы должны передать на следующее состояние, чуть упрощённое гру. И вот
166: Те. Тот прородитель лм, который сейчас у нас выстрелили, это вот трансформеры, это показано. Самый, самый 1 трансформер, вот он.
167: Мелковат, но нам просто для общего развития, значит, здесь вот показано, что n x это значит, что вот этот блок, он называется блок энкодера, он служит для того, чтобы создавать вот эти эмбеддинги. То есть, если мы
168: Вернёмся вот на эту картинку, то, грубо говоря, вот эмбеддинг, это вот эта вот часть, то есть которая создаёт вот этот вот 1000 вектор размерности 1000, a2 блок декодер.
169: Он из этой 1000, ему на вход только она поступает, он должен восстановить предложение, допустим, перевод. То есть вот мы закодировали предложение i love you, получился какой-то вот вектор длиной 1000, мы подаём его в декодер.
170: И из вот этого, из этого эмбеддинга получается у нас перевод, я тебя люблю. И вот он, соответственно, проходит через вот эту всю цепочку. Так вот, вот этот эникс, это как?
171: Вот этот блок, он у нас с вами может несколько раз встречаться. То есть вот этот вот этот энкодер, этот вот блок, он в данном случае для данной лекции там 6 раз встречается, столько же раз встречается декодер вот такая вот six.
172: Тема и внутри этой системы как раз все те знания, которые мы туда закладываем, они запоминаются в определённых весовых схемах, весовых матрицах, и это позволяет как раз вот делать те удивительные
173: Генерации, которые мы сейчас с вами наблюдаем. Ну, это 1 базовая схема, с которой все началось. И, ну, ещё, если поближе на неё посмотреть, то вот видите, этот инкодер, вот он там был, тот кусочек, он у нас из нескольких сетей находит.
174: И при этом здесь есть параллелизация запросов, и это очень хорошо, потому что, ну, быстрее обучается. То есть, мы с вами только что говорили, что вот для этих вот рекуррентных сетей, которые с обратной связью, что они запоминают приложение, что они, ну, хоро,
175: Хорошо делать предсказания и переводы, но, но их долго обучать. И они вот пока, значит, все слово предложение не пройдёт через эту рекуррентную сеть мы ответа не получим, то здесь, соответственно, мы можем параллелить
176: Сразу подавать несколько слов. Вот. И при этом ещё и при этом ещё эта система одновременно видит все слова. Ещё у неё есть так называемый атеншен. То есть она понимает, какие слова более важны, какие не важны. И поэтому
177: Тоже определёнными весовыми схемами. Это запоминает и знает, какое слово, допустим.
178: Правильно сгенерировать в следующий раз, чтобы перевод получился консистентным. Это вот общие слова про трансформеры и
179: Там, по моему, нет слайда, да. А вот значит, и теперь это, это были старые простые схемы. А теперь у нас с вами сложные схемы. Это 1 из простых схем, которые относятся к сложным. Обратите внимание. Вот видите, здесь написан
180: Что здесь несколько блоков от 1 до dd mm дит блок так вот вот он здесь нарисован, мэм дит блок, вот он, то есть внутри вот здесь вот находятся вот такие вот ещё.
181: Внутри 1 нейронной сети сложносочинённой находится много блоков, состоящих из других нейронных сетей, которые обучаются и позволяют вот делать такую генерацию текстов. Ну,
182: Здесь тоже для общего развития. Значит, вы везде будете слушать, что слышать, что есть такие матрицы, как k волью квери, в которых на самом деле и содержится вся, ну.
183: Вся библиотека тех знаний, которые мы при обучении в эту сетку загоняем. То есть вот пришла мне такая аналогия, что это как хомяк с этими, с орехами. То есть чем больше орехи, это как бы знания
184: Из разных областей, то вот чем больше этих орехов поместили внутрь нашей сети, нашего хомяка, тем лучше он запомнит. И больше данных у него будет внутри него, с которых он может что-то нагенерировать. То есть вот как бы
185: Вся магия находится как раз вот в этих матрицах кори, где одновременно с вниманием, одновременно с позиционными векторами у нас с вами запоминает модель
186: Которые в неё попадали. Ну вот небольшая тоже скриншот, как развивалась. Развиваются сети достаточно быстро. Вот gpt и bird были основными.
187: Основными, как сказать, сетями Берр создавал больше энкодер, он создаёт эмбеддинги gpt, он генерацией занимается. Это декодер, ну и т. 5.
188: Тоже это как бы совместная архитектура. Ну и их очень много значит. Вот обратите внимание, появилось и, ну, наша с вами задача научиться подготавливать под эту архитектуру, чтобы эти сервисы работали то, что они
189: Пока недостаточно, значит недостаточно гибкие, требует очень много ресурсов, значит здесь я вот ссылочку не ссылочку, а QR-код на.
190: На jupyter notebook, который позволяет, который вам покажет, значит, какие как сервисы искусственного интеллекта ещё выглядят, значит, не знаю, готов знаком.
191: Вы с google коллабом это инфраструктура, которую бесплатно предоставляет google значит можно если у вас есть аккаунт, вы заходите по ссылке коллаб и google com вот по этой ссылке заходите.
192: И у вас есть вот эта библиотечка, этот jupyter notebook, где вы можете выполнять код, значит здесь самое там важное, что я сейчас покажу здесь есть time, type это ресурсы, которые вам
193: Либо это cpu то есть это виртуалка под вас будет сейчас в моменте поднята настроена, где вы будете на cpu какие-то алгоритмы делать, либо вот на гпу гпу это у нас с вами.
194: Видеокарты, которые позволяют хорошо обсчитывать нейронные сети. Вот, ну, есть также там, тпо и другие виды карт, ну, платные и бесплатные, которые позволяют нам крутить нейроночки наши.
195: Вот гпо мы с вами выбрали и нажимаем connect сейчас что происходит, он выделяет нам ресурсы, как мы уже с вами в докере там, в кубернетисе, до этого видели, что создаётся там под или виртуальная машина, в которой.
196: Мы с вами можем работать, она уже настроена, у неё уже там библиотечки даже определённые стоят. Ну давайте посмотрим этот ресурсы. Так, ресурсы, какие нам доступны. Вот видите, нам доступно 12 гигабайт оперативной памяти гпу.
197: 15 гигабайт оперативной памяти на видеокарте. Ну и вот там 112 гигабайт жёсткого диска. Вот. Ну и я этот ноутбук долго не буду показывать.
198: Смысл такой, что мы сможем доустановить определённые библиотеки, которые позволят нам скачать сервисы искусственного интеллекта локально. В данном случае мы сейчас локально скачаем вот на
199: Сервера google, и они там у нас будут работать, например, распознавать картинки, будут голос создавать, распознавать и так далее. Но если вы это сделаете у себя дома этот код запустите, то, ну, надо будет только инфраструктуру тоже немножко поднастроить, чтобы все это
200: Работала не, библиотеки между собой не переругались, то вы локально у себя скачаете чат gpt какой-то там базовый и сможете поднять у себя локально сервисы.
201: Искусственного интеллекта. Значит, тут есть библиотека transformers. Её, кстати, сегодня, по моему, обновили, из неё загружаются какие-то там определённые функции и что? Давайте просто посмотрим, как это работает. Значит, здесь мы с вами установили необходимые библиотеки.
202: Искусственного интеллекта здесь мы с вами значит загрузили эти библиотеки искусственного интеллекта и здесь мы с вами просто с интернета скачали какую-то картиночку по вот этому url просто 1 попавшаяся что была в интернете это вот маши
203: И значит, мы можем воспользуемся сейчас сервисом, который называется компьютер, компьютер, вижн и классифицируем изображение. Мы хотим понять, что у нас изображено на данной картинке, значит,
204: Мы запускаем вот этот код, то есть вот сколько строчек? 2, 4, 6, 8, 9 строк, которые нужны нам для того, чтобы 1 скачать картинку. Вот.
205: Это мы скачиваем картинку. Значит, здесь мы с вами подключаемся к сайту, который называется хаген фейс и скачиваем гугловую модель, которая позволяет распознавать изображение. Она
206: Локально скачается. Весит она 347 мегабайт. И так, если вам мелковато, вы скажите, я прибавлю этот
207: Размерность. Так значит после этого мы с вами вот в определённую функцию фича экстрактор, который мы только что загрузили, наше изображение отправляем, потом применяем это все к этому модель. Ну то есть, а вот что такое
208: Фич, экстрактор это когда мы с вами изображение, которое вот это двумерное, мы его отправляем в этот фич экстрактор, то, что я вам показывал, прогоняем через эту всю сеточку, ну какую-то определённую определённого размерности, и она выдаёт
209: На вот этот вектор, там условно 1000, мы его отправляем в модель. Модель делает предсказания. Далее мы, ну, чуть чуть по другому, но для базового понимания вполне достаточно. В общем, мы в итоге получаем на выходе вектор
210: Котором, значит, применяем метод аргмакс и на выходе получаем то, что я вам говорил, как вектор из 1000 значений, где
211: Самое большое значение, его индекс является нашим классом. В общем, это делается с помощью вот этой строчки. И нам показывает, какой класс, значит, рейсер, рейсер кар и racing car. То есть он показывает, что это гоночная машина, то есть вот
212: Мы с вами скачали файл размера размером 347 мегабайт с помощью вот этих вот строчек в него мы можем передавать url или просто картинку с нашего жёсткого диска в этот код и он будет распознавать
213: Там, что на этой картинке нарисовано. Давайте перейдём по этой ссылке, чтобы вы скажете, а где я взял этот код, как, откуда его написал. Это сложно, не сложно. Вот мы с вами попали на сайт, который называется хаггинфейс, и
214: Здесь есть модели и вот здесь есть в в моделях можно посмотреть как бы область домены с кото, где, какие модели вы можете скачать, например, аудио тексту, текст, имидж.
215: Текст, текст или, ну я просто не знаю, там о чем-то говорится. Визуальный вопрос. Ответ, какой-то визуальный вопрос. Ответ. Так, дальше что у нас есть? Вот сегодня увидим.
216: Определение глубины на картинке. Имидж переводит видео, вы ему передаёте вот в этот код картинки, он вам делает видео, текст переводит в картинку тоже сегодня, кстати, тоже это будет текст у 3 д и так далее. Классификация текста. Видите, это то, что относит
217: К тексту красным компьютер вижн, то что относится к изображениям. Вот, то здесь нужно перейти там по ссылке. Вот мы обжект, детекшн это сейчас как раз когда мы с вами машину рассматривали и вот здесь большое количество 100
218: Более страниц каких-то моделей определённых людей, которые туда их загрузили. Ну, обучили, переобучили, что-то своё, добавили. Здесь можно посмотреть, как часто там лайкают их, как часто скачивают, и воспользоваться.
219: Модели, ну, грубо говоря, вот в него перейти. И вот здесь вот есть описание, и даже вот можно перейти, видите, опен ин коллаб, сразу же будет код, как им воспользоваться. Но мы воспользуемся той ссылкой, которая была до этого. Просто вот мы перешли в google collab
220: Вот мы перешли вот в эту модель, вот она так называется, ну вот мы её выбрали на предыдущем экране и спускаемся вот как использовать, как использовать. И вот мы с вами просто, видите, отсюда копируем код, вставляем туда и
221: У нас с вами есть свой локальный сервис, который позволяет делать преобразования. Url. Подставляем свой и все. И он у нас работает. Посмотрели, часто бывает вопрос.
222: Что такое вот эта модель? То есть вот эта модель, которую мы скачали, что она из себя представляет, на самом деле, это, ну, модель состоит из 2 файлов. 1 файл это файл, формат json это как бы скелет или оболочка.
223: Той нашей сети, нейронной сети, которая, ну, должна быть создана. То есть, на том слайде, который я вам показывал. Там вот эти вот слои были, когда у нас из размерности 224 мы сжимали в вектор
224: 1000. Так вот сколько там было слоёв, сколько там нейронов, это все прописано в этом же файле. Соответственно, инфраструктура при загрузке, она знает, что если там сколько слоёв, там все расписано, в общем, в этом файле, и она сможет её восстановить.
225: Как бы ребра у нас с вами в 1 файлике, джейсон маленького размера. Ну, грубо говоря, вот он, конфи джейсон, 69 килобайт этих рёбер, а в самой модели 347 мегабайт это вот эти вещи.
226: Числа, то, что тоже в презентации вам показывал значение, там - 0 1, - 0 15 и так далее. То есть там очень большое количество нейронов. То есть если мы говорим, что у нас нейронная сетка содержит там 100000000 нейронов, то
227: Грубо говоря, там 100000000 весов числовых значений туда записано, эти веса были обучены кем-то, и мы можем переиспользовать их, или дообучать, или каким-то образом переиспользовать. Так?
228: Поехали дальше. Ну вот загрузим картиночку с котами. Применим уже нашу модель. Видите её уже не надо, не нужно её, не нужно её загружать, потому что она у нас загружена в оперативную память. Применили. Ну зря я это сделал.
229: В общем, там он определил, что это не коты на самом деле, а, ну, моделька не очень хорошо определяет пульт управления, определил. Ну вот, давайте теперь посмотрим там на жирафа берём жирафа, значит, его картинку скача.
230: Отправили нашу модель. Ну правда, вот видите, он как зебра определил. Ну, потому что модель маленькая, старенькая, плохо определяет. Так, ну давайте ещё раз. Object detection, что, что следующая модель позволяет от фейсбука.
231: Значит, она позволяет точно также код весь переиспользуемый. Вот по ссылке можно перейти, посмотреть, просто копируем его, что он делает. Скачивает модельку размером 167 мегабайт и мы получаем, что мы
232: Что мы получили, определили ремоут, это пульт управления с вероятностью 99% в месте и здесь показаны координаты этого места. То есть мы по этим координатам можем нарисовать так называемый
233: Bouncin бокс, то есть коробочку здесь вот, и и соответственно выделить где он нашёл эти вот эти пульт управления. Это у нас кресло нашёл и кота.
234: Нашёл, ну, коуч, вот это кресло видно. Видите, ну что это координата начала, а это 2 координата по диагонали. Из этих 2 координат мы можем всегда восстановить прямоугольник. Ну, если вам интересно.
235: Потом посмотрите этот по ссылке этот код, запустите его и переиспользуйте. Ну и в итоге вот допустим, видите сервис, который мы скачали, позволяет убрать весь фон, и мы получаем то, что стоит.
236: На переднем плане. Ну и вот маска. Так пойдёмте дальше.
237: Это мы с вами посмотрели, значит мы посмотрели, какая бывает инфраструктура отказоустойчивая, посмотрели там докер, хадуп, значит и так далее. Теперь посмотрели немножко сервисы, познакомились искусственного интеллекта, которыми
238: Которые нужно, нам нужно будет вот инфраструктурой покрыть и то, что вот сейчас имеет самую большую важность это
239: Лм. Сети так немножко вперёд почему-то у меня тут rock ну ладно, значит рак это там продвинутая ллм сеть позволяет ну лнм сеть это то, что я вам показывал трансформер то что вот было.
240: Decoder, хомяка этого с орехами. Так вот, чтобы он лучше ещё находил наши ответы то существуют такие, как раг это
241: Аугмент генерейшен, который можно перевести как поиск. Дополнение генерации. В общем, он позволяет ещё лучше генерировать наши запросы, если так как бы банально посмотреть раньше, когда мы делали запросы в поисковой
242: Системе нам выдавалось что-то, мы спрашивали и нам выдавалось 10 или там 15 каких-то ссылочек и и мы должны были сами найти нужную ссылку, нужную информацию по этой ссылке этот старый интернет, как говорится,
243: Значит, и там мы жаловались, что не сразу находишь, нужно несколько страниц пролистать, пока ты найдёшь то, что ты хочешь. Но теперь пришёл на смену новый интернет, когда новые поисковые системы, когда нас заставляют.
244: Хорошо писать вопросы. То есть вот, значит, новый вопрос, ответ на системы. То, что мы пром сейчас называем это мы должны, задавая вопрос, ещё добавить какую-то дополнительную информацию контекста, чтобы лучше модель на
245: Значит, могла сгенерировать ответ нам. То есть фактически мы теперь поисковые системы людей обучают более правильно формулировать вопросы, чтобы лучше они могли найти.
246: На ответы такое вот интересное замечание. Хотел бы сказать. Ну и самый простой пример вот этого рага, это у нас есть, м, сеть, м, сеть, это то, что мы говорили, нейро.
247: Сеть, значит мы делаем какой-то запрос, запрос это текстовая информация. Там найди мне что-то или напиши мне что-то, что происходит под цифрой 1 под цифрой 1 мы превращаем наш
248: Запрос в вектора. То есть вот то, что мы с вами говорили, вектор длиною, допустим, 1000 или 512, мы его запрос превращаем в некоторый вектор, то есть делаем этот эмбеддинг, соответственно, для каждого отдельно.
249: Различного запроса у нас будет свой уникальный эмбеддинг, вот этот вот вектор. И таким образом, допустим, для текстов по футболу эмбеддинги будут определённого вида, как мы говорили, там мужчина с усами без Усов, то есть
250: Очень косвенным расстоянием, похожим таким точно также и в лм, и врагах работает. То есть у нас где-то есть уже тексты, которые мы, на которых мы обучали.
251: То есть мы их представляем в виде векторов, и мы не запоминаем сами тексты, мы запоминаем этот вектор. То есть вот большой кусок текста, не знаю, войну и мир мы отправляем внутрь нашей сети. На выходе мы получаем вот какой-то вектор, из которого теоретически можно
252: Эту войну и мир с помощью декодера восстановить. Вот, и если, допустим, мы возьмём какое-то предложение из этого текста война и мир, то мы можем найти
253: Как бы соответствие с футболом, с векторами, которые относятся к футболу, сравним косинусным состоянием или с векторами, которые относятся к войну и мир, соответственно, ближе к косинусным состояния будет войной и мир, значит, там будут искать наш ответ. Ну,
254: Вот мы с вами делаем, соответственно, вектор и ищем косинусную близость с теми данными, которые у нас уже оцифрованы. Что такое чанк. Это когда мы наш с вами вектор, допустим, очень большой, ну, всю войну и мир на самом деле в 1
255: 1000 вектор нельзя сжать, это слишком грубо будет, поэтому мы разбиваем на чанки, то есть на какие-то кусочки, допустим, по не знаю, по 100, допустим, сейчас представим себе по 100 токенов и отправляем уже порциями.
256: Такими вот, в общем, что мы делаем с помощью косинусной близости определяем, значит, сравниваем с векторами топка самых близких, косинусным расстоянием достаём.
257: И подаём вместе с запросом в этот, в запрос пользователя. То есть человек спросил там, кто написал войну и мир. Мы этот вопрос отправили в нашу базу данных, там нашли какие-то данные по войне и миру.
258: По толстому потом все это сложили и вместе с вопросом, кто написал войну и мир, отправили в лмку, и тогда она лучше сможет ответить нам, потому что она поймёт, про что идёт речь. Ну и, соответственно, даст нам ответ вот так рабо.
259: Вот все. И вот для лмки, которые сейчас хорошо делают генерацию текста, значит, под них мы должны сделать архитектуру и какие здесь есть ухищрения, что значит
260: Эти сервисы, они уже состоят из каких-то частей, например, из баз данных, вектор db, Фаис и так далее. Также у нас есть проблема, если много человек у нас будет одновременно к нашей лмке подключаться
261: Она достаточно долго думает, вы, наверное, тоже заметили там и минуту, там, и 20 секунд может думать. В общем, нам нужно сделать так, чтобы какая-то балансировка нагрузки должна быть от наших пользователей. То есть, значит, в начале там 10 пользователей могут пользоватьс.
262: А потом, может быть и вся контора там, и 10000, и так далее, и выше пользователей. Соответственно, мы должны каким-то образом делать балансировки. Мы сейчас это посмотрим. Значит, также, ну, инжин для этого можем использовать базы данных. Векторные должны быть, потому что мы как раз
263: Векторы и сохраняем, чтобы там быстро можно было находить эти вот вектора, соответствие их индексы и так далее. Вот cash нужен то, что помните, я вам про редис говорил, тоже используется очень быстрая база данных для
264: Локальных таких вот расчётов. Ну и для анализа, как работает наша с вами сетка, там, нет ли у неё там этих зависаний и так далее. Используется для отслеживания метрик и так далее.
265: Ну и кубернетис для того, чтобы мы могли какие-то новые инстансы создавать быстренько. Если там одновременно много человек начали пользоваться нашим сервисом. И теперь давайте посмотрим тут несколько
266: Основных принципов создания архитектур для сервисов искусственного интеллекта. 1. Масштабируемость нужна. Ну вот здесь, в частности, горизонтальная вертикальная
267: Кубернетиса, разделение, компоненты, синхронная обработка. То, что к этому относится к масштабируемости. Устойчивость, то, что мы с вами прошли. Репликация, резервные узлы, узлы, там, перенаправление трафика, кубернетис, это
268: Вот те инфраструктурные компоненты, которые позволят нам сделать отказоустойчивость, производительность, нам нужно увеличивать, ну, конечно, физически достаточно дорого фирмы и покупать, поэтому
269: Какие-то существуют дополнительные на программном уровне варианты квантования или сжатия моделей, хранение частых запросов, оптимизация, распределение нагрузки, модульность, ну вот разделение на сервисы как раз то, что, м,
270: Говорили, микросервисы здесь тоже хорошо заходят, и нужно нам все это научиться рассчитывать, чтобы эта система работала, и быстро работала, и хорошо работала, и отказоустойчива. Ну, безопасность. Куда же без неё, чтобы
271: Вопрос, который задал пользователь, вернулся бы именно ему ответ на этот вопрос, а не другому пользователю или не всем тоже это нужно предусмотреть. Обратная связь, обновление модели, логирование, анализ тоже.
272: Сервисы нужны для построения нашей архитектуры. Ну и вот существуют также облачные платформы, катеризация, оркестрация и так далее. Но как бы если мы говорим про какие-то крупные фирмы, то соответственно
273: Нужно будет разворачивать, научиться разворачивать локально. Это в той фирме, которую мы с вами устроимся на работу. Так, ну, осталось.
274: Ещё несколько слайдик в значит, как физически выглядят видеокарты. Ну, наверное, уже знакомы. Это те видеокарты игровые, с которых все начиналось, но совершенствуются они, значит,
275: Под них специальные материнские платы, специальные блоки питания, охлаждения и так далее. Нужны, соответственно, это та физика, достаточно дорогая, сильно дорогая, которая сейчас, которую нужно уметь обслуживать.
276: Ну вот просто картиночки, как это выглядит там tesla, ферма и так далее. Вот видите, какая-то дисковая полка. Тут я только заметил. Так, теперь есть железо, а есть софт.
277: Случае, когда, когда мы с вами говорили про данные, про, про эмбеддинги, это были какие-то числовые вектора. Так вот, когда у нас большая модель обучена там серьёзными ребятами, гуглом, там и остальными они
278: Используют большое количество то чисел после запятой для того, чтобы кодировать вот эти вот числа в эмбеддингах, потому что чем меньше, допустим, у нас чисел после запятой to меньше,
279: Точность нашей модели она хуже работает, но, соответственно, чем больше этих значений, то их нужно хранить в памяти, хранить на жёстком диске размеры резко увеличиваются, поэтому варианты наши e исследователей
280: Это, допустим, скачать какую-то чужую модель, где большое количество точек после запятой размерность большая и сделать обрезать тран какой-нибудь сделать или round flo там и соответственно,
281: Размерность будет меньше, чуть чуть похуже будет работать, но в принципе можно её переиспользовать. Вот это имеет значение для расчёта оперативной памяти. Вот сейчас мы это единственная формула в этой лекции. Давайте на неё посмотрим, значит, допустим,
282: У нас с вами вот на face, куда мы сегодня с вами заходили, какую-то модель, уже известную вам queen, лама или дипси, можем скачать прям оттуда локально она у вас будет и точно также будет генерировать какие-то ответы. И вот
283: Вот эти квантизации, это как раз вот количество, размерность чисел вещественных, количество точек после запятой и, значит, веса которых у нас с вами
284: Очень много они занимают определённый объём памяти. То есть каждое вот это вещественное число в оперативной памяти содержит определённый объём. Так вот, значит, соответственно, мы должны сколько параметров, сколько нейронов у нас с вами в сети, столько и, ну,
285: Умножить на размерность 1 этого вещественного числа. То есть если вот у нас шестнадцатеричная, в общем, размерность в п 16, то на следующей, как мы увидим, как это выглядит
286: То тогда 2 байта на параметр у нас уйдёт, то есть если у нас с вами, допустим, queen 7 b7 биллионов, то 7 миллиардов нейронов в этой сети находится и на каждый, значит, на каждый.
287: Нейронам нужно 2 байта, чтобы записать это число такой размерности 16, то тогда нужно 14 гигабайт оперативной памяти для того, чтобы наша сетка с вами работала, но
288: Это не только там достаточно много ещё дополнительной памяти нужно, допустим, для активации тоже несколько гигабайт может понадобиться. И вот у коллег по ссылке взял такой вот такой
289: Табличку, где, допустим, мы берём какую-то сеточку на 32 миллиарда параметров. Если у неё размерность 32, то нужно 128 гигабайт оперативной памяти там
290: Размеры уменьшаем в 2 раза и меньше, объём оперативной памяти и так далее. То есть вот до 16 это уже у нас с вами, может на нашей локальной машине мы можем развернуть, но тогда это будет сетка, которая галлюцинировать будет мно.
291: Потому что у неё все отрезали, всю её вариативность. Так, ну вот этот слайд я вам уже показал. Это те ресурсы, которые нам доступны в google collab бесплатно. Ну, ссылка это как раз на тот код, который я вам показывал. Так, вопросики
292: И остаётся ещё немножечко, что, ну, ещё пару вариантов это можно балансировать нагрузку вот через nginx. Вот такой вариант расписан или вот тоже коллеги.
293: Значит, предлагают использовать там балансировку днс биджипи, её прокси, джинкс, бикью и так далее. И ещё это все это инфраструктура, которая поддерживает, которая обеспечивает
294: Распределение нагрузки, а ещё же сама ещё сама сетка ещё дальше идёт со своими параметрами. Поэтому картинка становится ещё более сложная. Это вот то, чему нужно учиться в ходе курса, чтобы мы могли нашу с вами
295: Инфраструктуру поддерж создавать. Теперь я немножечко тоже хотел бы вам рассказать. Буквально немного вашего времени отниму какие существуют направления машинного обучения. То есть вот допустим, вы решили из
296: Системы архитекторов, перейти в область машинного обучения, ну, не прямо, чтобы полностью перейти, а, допустим, для того, чтобы вы могли создавать инфраструктуру для этих сервисов. Так вот, существует там несколько направлений, ну, в данном случае здесь 4 нарисован
297: 1 дата инженер, это люди, которые занимаются поставкой данных, то есть они работают с таблицами, с логами, с пар сайтов и так далее. И все это в табличку.
298: Загоняют и потом отправляют их можно отправлять уже в библиотечке искусственного интеллекта, модели машинного обучения, чтобы делать какие-то предсказания дальше. Вот то, к чему мы с вами ближе, это ml инженеры, софт инженер.
299: Это те люди, которые разбираются в железе, в операционных системах, в линуксе, в виртуализации и так далее. То есть вот те, которые создают инфраструктуру под сервисы машинного обучения. Также
300: Есть ещё бизнес аналитики это те люди, которые хорошо разбираются в данных. То есть они могут ничего не знать про машинное обучение, про железо, но они хорошо знают там, если про бухгалтерию, то там дебет, кредит, они все очень хорошо знают. Вот есть ещё отдельные исследователи, которые
301: Занимается только вот такими высокоуровневыми моделями, какие-то строят гипотезы. Вот. Но на самом деле много достаточно там профессий, которые фродом занимается рекомендательными системами, обработкой текста. Это все как бы
302: Отдельные специальности. Вот, и давайте просто посмотрим ещё. Я еле на самом деле нашёл сегодня вакансию, которая релевантна нашему с вами уроку. Это вот проектирование архитектуры корпоративной иай системы и что здесь нужно?
303: Делать, видите, настраивать, развёртывать рак сервера. То, что мы с вами сегодня изучили, подключать локальные, облачные, н, для корпоративных задач. Разработка иай ассистентов. Ну, это фактически то, что вот я вам в каабе показывал
304: Там тоже вот то, что к этому можно, можно отнести технические задания, тестирование, передача команде и что требуется опыт проектирования, внедрения, опыт работами с ллм. Обратите
305: Мне с базами данных интеграция с какими-то другими сервисами. Значит, чтобы мы могли данные в лмку передавать и получать нужные ответы понимать вот эти вот специфичные библиотеки и технологии относя
306: Как ланчен лам, индекс и так далее. Опыт работы с гпо.
307: И опыт построения рак систем и пайплайнов нлпи. То есть вот достаточно, чтобы быть архитектором, нужно ещё все-таки достаточно много понимать, что такое вот эти вот новые виды нейронных сетей, лмки, как они работают и так
308: Далее. Но, с другой стороны, таких вакансий ну прямо очень мало. То есть конкуренция, я бы сказал, минимальная, потому что здесь фактически совмещаются 2 профессии data scientist и архитектор. Вот.
309: И по результатам курса, чтобы вы могли получить это, создать какой-то свой проект, то есть архитектуру какую-то или лепку, поднять свою локально и уже презентовать её дальше. Ну, внести это в резюме.
310: Значит, обновить его, улучшить свои позиции на гитхабе, оптимально выложить код для того, чтобы люди видели, что вы сделали как вариант написать статью на хабр, потому что по архитектуре там всего
311: 1 статья там, условно такая вот плюс минус, которая, которую, которую можно цитировать. В общем, достаточно мало там данных, ну и какие-то реальные задачи, которые сейчас важны на практике, это
312: Разметка данных, то есть сейчас для того, чтобы этими лмками пользоваться, допустим, условно, вот в банке, допустим, или в какой-то компании, она работает со своими внутренними документами, эти документы могут иметь какую-то закрытую структуру и
313: Отправлять эти данные во вне, чтобы какие-то, какие-то сервера за границей обрабатывали данные. Ну это не вариант, поэтому нужно. Есть важная задача сейчас востребованная, это значит подготовка дан.
314: Внутри компании поднятие данных, поднятие лмок внутри компании, которые эти данные будут обрабатывать. И, ну это востребованная профессия. В общем, соответственно, также важен парсинг данных. Вот, а ещё раз про разметку данных, то что
315: Они в определённых форматах находятся не только все в текстовом, а ещё это могут быть логи, мог быть word, pdf распознавать надо, то есть тоже это нужно научиться делать, это очень полезно, сейчас важно, ну и вот дообучать текущее, существующее.
316: Или обучать их с нуля на своих данных тоже сейчас достаточно востребовано. Вот если есть возможность
317: Оцените, пожалуйста, мою презентацию по ссылке. Она в самом начале нашего с вами.
318: Чата указано дальше и буквально ещё 2 минутки про курс, что по ссылке можно посмотреть, что он из себя представляет, какие знания вам будут даны. Значит, что это
319: Фундамент, стратегический, планирование архитектуры, качество, безопасность, инфраструктура, паттерны и проектную работу вы сделаете, ну, то, что вам говорил, если бы
320: Значит, ой, вопросы. Сейчас отвечу. Значит, программа курса преподаватели на данном курсе. Ну, там все это потом будет более понятно. Ну, чем отпуск хорош и отличается тем, что это живые вебинар.
321: Записи всегда вы можете увидеть, домашки проверяются, фидбэк даётся с коллегами достаточно плотненько, значит в чатиках общаются. Вот у меня там часы, значит, пищат, визжат, потому что
322: В чатах тоже переписки идут студенческих. Ну и вы сможете сделать проект. А проект это какой-то свой сервис, который, с которым его и себя можно продать для того, чтобы
323: Перейти в новую профессию или заработать денег вот ну и обновление да, мы достаточно часто обновляем курсы по вашей обратной связи, которую вы могли бы тоже мне дать, значит по ссылке QR code вы можете посмотреть ещё раз про этот
324: Курс, что он стартует вот 24 декабря длительностью 4 месяца. Вот. Ну и что, давайте подведём итоги, что там, чтоб не пересматривать, мы с вами поговорили про основы архитектуры.
325: Про отказоустойчивость её dr фото посмотрели как ходу устроен про микросервисы поговорили, про лмки поговорили, посмотрели как обрабатывать тексты что там токены векторайзеры.
326: Что такое ленки? Рагги тоже затронули достаточно плотненько. У нас с вами сегодня прошла лекция. Вот посмотрели какие свойства архитектуры искусственного интеллекта посмотрели
327: Инфраструктура. Ок, там, там какие-то балансировки поговорили, какие профессии про востребованность. Ну и вот следующий, тоже открытый урок вы можете посмотреть 15 декабря про устойчивость проектирования, вот какие-то
328: Скидки тут есть не показывает, что-то тут написано было. Ну не сработала эта дживка, значит 2 курса, 20%, 3 курса, 30%, что-то, какие-то скидки, общем, новогодние в канале, отус новости.
329: Можете почитать и приходите к нам учиться.
330: Вот, коллеги, вопросы, значит, докер это не гипервизор, но как бы вот в моём понимании, значит, да, спасибо за вопрос. Что докер.
331: Ну, такой особый вид гипервизора. Значит, ладно, не буду я спорить по этому поводу. Значит, размер единичка, а длина его 1000, да, спасибо. Это получается тензор размерностью 1 на 1000. Вот. Ну и по
332: Разобрались все. Коллеги. Спасибо вам большое. Желаю вам удачи.
333: До свидания.