На выходных баловался с ChatGPT и листал треды твиттера. Результатом стала статья на хабре. Если коротко, то модель крутая. Думаю, что пишет код лучше, чем Copilot, а вдобавок, может генерить много больше.
В качестве иллюстрации, вот вам шутка от модели про машинное обучение.
P.S. Если хотите потестить модель, напишите в комменты запрос - сгенерю за вас. Либо можете зарегаться сами, в статье все ссылки.
https://habr.com/ru/post/703568/
В качестве иллюстрации, вот вам шутка от модели про машинное обучение.
P.S. Если хотите потестить модель, напишите в комменты запрос - сгенерю за вас. Либо можете зарегаться сами, в статье все ссылки.
https://habr.com/ru/post/703568/
Как и где искать новую работу.
Собрал небольшую заметку про поиск работы (больше про зарубежные компании). Тут оговорка, что в большинстве позиций нужно, чтобы у вас было право работы на территории страны. Но есть и вакансии full-remote и с релокацией.
Во-первых, нужно актуализировать или составить CV (резюме), профиль на Linkedin и других платформах.
1. Посмотреть материалы гарварда.
2. Полистать закрепы и примеры в чате @resume_review
3. Составить резюме. Я использовал вот такой шаблон в overleaf
4. Можно закинуть CV в чат из 2 пункта для обратной связи.
Во-вторых, искать вакансии и подаваться.
1. Найти рефералов (человек из компании, который вас рекомендует) в компании через знакомых, чаты и сеть Linkedin. Самый рабочий способ, если хотите в конкретные компании.
2. Заполнить свой профиль на Linkedin. Будут прилетать вакансии от рекрутеров в личку/на почту. Откликался на вакансии через сам Linkedin, отдача маленькая, но собесы оттуда были.
3. Откликаться на вакансии в чатах. На первый этап точно попадете. Круто, что в #_jobs в слаке ods, описание вакансий сразу с вилкой зп.
4. Бот @g_jobbot. Были и предложения, и офферы, и сам откликался.
5. На hackernews каждый месяц появляется тред, где публикуют вакансии. Вот их агрегатор.
6. Есть разные ресурсы, которые матчат вас с работодателем. Вроде honeypot. Я пробовал, даже был собес. Но там были низкие вилки и мало предложений.
7. Indeed.com или angel.co Регался, даже была пара собесов оттуда.
8. Находить на crunchbase свежие стартапы, которые подняли раунд и теперь нанимают. Не пробовал такой способ, но хотел.
Еще можно подаваться напрямую в компании через сайт, но я такой способ не пробовал без рефералов.
Напишите в комменты, какие еще ресурсы вам помогали в поиске работы. Или что из этого списка cработало.
Собрал небольшую заметку про поиск работы (больше про зарубежные компании). Тут оговорка, что в большинстве позиций нужно, чтобы у вас было право работы на территории страны. Но есть и вакансии full-remote и с релокацией.
Во-первых, нужно актуализировать или составить CV (резюме), профиль на Linkedin и других платформах.
1. Посмотреть материалы гарварда.
2. Полистать закрепы и примеры в чате @resume_review
3. Составить резюме. Я использовал вот такой шаблон в overleaf
4. Можно закинуть CV в чат из 2 пункта для обратной связи.
Во-вторых, искать вакансии и подаваться.
1. Найти рефералов (человек из компании, который вас рекомендует) в компании через знакомых, чаты и сеть Linkedin. Самый рабочий способ, если хотите в конкретные компании.
2. Заполнить свой профиль на Linkedin. Будут прилетать вакансии от рекрутеров в личку/на почту. Откликался на вакансии через сам Linkedin, отдача маленькая, но собесы оттуда были.
3. Откликаться на вакансии в чатах. На первый этап точно попадете. Круто, что в #_jobs в слаке ods, описание вакансий сразу с вилкой зп.
4. Бот @g_jobbot. Были и предложения, и офферы, и сам откликался.
5. На hackernews каждый месяц появляется тред, где публикуют вакансии. Вот их агрегатор.
6. Есть разные ресурсы, которые матчат вас с работодателем. Вроде honeypot. Я пробовал, даже был собес. Но там были низкие вилки и мало предложений.
7. Indeed.com или angel.co Регался, даже была пара собесов оттуда.
8. Находить на crunchbase свежие стартапы, которые подняли раунд и теперь нанимают. Не пробовал такой способ, но хотел.
Еще можно подаваться напрямую в компании через сайт, но я такой способ не пробовал без рефералов.
Напишите в комменты, какие еще ресурсы вам помогали в поиске работы. Или что из этого списка cработало.
Мое резюме на момент апреля, мб пригодится как пример. Одно на mle позиции, второе на swe.
Написал статью на основе заметок по собеседованиям отсюда. В качестве доп материалов добавил:
+ скрин литкода
+ фото заката с Бали
+ фото домашнего рабочего места в Москве
+ общие советы для прохождения собеседований
https://habr.com/ru/post/704128/
+ скрин литкода
+ фото заката с Бали
+ фото домашнего рабочего места в Москве
+ общие советы для прохождения собеседований
https://habr.com/ru/post/704128/
Хабр
Как устроен процесс найма и собеседований на позицию Machine Learning Engineer
Это статья с 21-ой ссылкой о подготовке к собеседованиям на позиции Machine Learning Engineer. Статью собрал на основе заметок из своего канала в тг . Контекст Cейчас я отвечаю за ML в...
Как я подтягивал английский.
В школе нам преподавали английский на 8 из 10. Моя первая учительница нашла себе англичанина по переписке и уехала к нему жить в Манчестер. В универе как иностранный я выбрал французский, а английский никак не использовал. Когда уже начал работать – английский был нужен на уровне читать тексты и смотреть лекции. Разговорный, который нужен для поиска работы, никак не практиковался, а зря. Собеседования - это стресс, собеседования на английском - двойной стресс. Поэтому параллельно с подготовкой к ним, я начал прокачивать и язык.
Мои принципы прокачки английского
+ цель - хочу спокойно проходить все этапы (алгоритмы, дизайн, behavioral) на английском (британский, американский, разные акценты).
+ хочу при заданном затраченном времени получить максимум результата.
+ не хочу заниматься “3 раза в неделю по часу вечером в течение полугода чтобы отличать все времена perfect между собой”
+ не хочу делать однотипные упражнения
Общая система
Занимался английским 40 минут каждое утро во время завтрака, так привычка английского закрепилась за завтрак. Иногда делал перерыв и потом занимался еще минут 40. На выходных минут по 20-30 чисто слова повторял.
Набор упражнений
1. Словарный запас. Взял топ 1000 частотных слов, пролистал и все что не знаю закинул в анки карты и повторял. Потом взял топ 3к слов.
2. Умение говорить, умение писать и грамматика. Взял кучу вопросов к behavioral , накидал ответы через голосовой ввод -> закинул в Grammarly , чтобы проверить ошибки -> темы, в которых ошибаюсь прочитал в Murphy и поделал упражнения.
3. Слушание. Смотрел выступления на ютубе или daily dictation и устраивал себе диктант. Либо пересказывал своими словами и опять в пайплайн грамматики.
4. Умение говорить. Нашел преподов на italki из стран с высоким уровнем английского, но низкими доходами:Кения, Филлипины, ЮАР, Нигеия, Малайзия . С ними устраивал мок-собеседования либо общение с неожиданными вопросами от них и разбором.
5. Читал фоном книги на англ, сериалы. Но это я обучением не считаю, это потребление контента.
Проверка себя.
Тест через приложение English score для оценки грамматики, слов, аудирования. Моки собеседований и реальные собеседования для оценки разговорного английского. Особенно, когда звонят на мобильный телефон и там связь плохая.
Пост прям по верхам написал, потом подробнее разберу второй пункт с упражнениями и что конкретно делал. В комментариях, прошу поделиться, кто как качает мышцу английского.
В школе нам преподавали английский на 8 из 10. Моя первая учительница нашла себе англичанина по переписке и уехала к нему жить в Манчестер. В универе как иностранный я выбрал французский, а английский никак не использовал. Когда уже начал работать – английский был нужен на уровне читать тексты и смотреть лекции. Разговорный, который нужен для поиска работы, никак не практиковался, а зря. Собеседования - это стресс, собеседования на английском - двойной стресс. Поэтому параллельно с подготовкой к ним, я начал прокачивать и язык.
Мои принципы прокачки английского
+ цель - хочу спокойно проходить все этапы (алгоритмы, дизайн, behavioral) на английском (британский, американский, разные акценты).
+ хочу при заданном затраченном времени получить максимум результата.
+ не хочу заниматься “3 раза в неделю по часу вечером в течение полугода чтобы отличать все времена perfect между собой”
+ не хочу делать однотипные упражнения
Общая система
Занимался английским 40 минут каждое утро во время завтрака, так привычка английского закрепилась за завтрак. Иногда делал перерыв и потом занимался еще минут 40. На выходных минут по 20-30 чисто слова повторял.
Набор упражнений
1. Словарный запас. Взял топ 1000 частотных слов, пролистал и все что не знаю закинул в анки карты и повторял. Потом взял топ 3к слов.
2. Умение говорить, умение писать и грамматика. Взял кучу вопросов к behavioral , накидал ответы через голосовой ввод -> закинул в Grammarly , чтобы проверить ошибки -> темы, в которых ошибаюсь прочитал в Murphy и поделал упражнения.
3. Слушание. Смотрел выступления на ютубе или daily dictation и устраивал себе диктант. Либо пересказывал своими словами и опять в пайплайн грамматики.
4. Умение говорить. Нашел преподов на italki из стран с высоким уровнем английского, но низкими доходами:
5. Читал фоном книги на англ, сериалы. Но это я обучением не считаю, это потребление контента.
Проверка себя.
Тест через приложение English score для оценки грамматики, слов, аудирования. Моки собеседований и реальные собеседования для оценки разговорного английского. Особенно, когда звонят на мобильный телефон и там связь плохая.
Пост прям по верхам написал, потом подробнее разберу второй пункт с упражнениями и что конкретно делал. В комментариях, прошу поделиться, кто как качает мышцу английского.
Как работают text2image модели и как получаются такие качественные изображения?
Короче, если кто-то хочет разобраться в работе text-to-image моделей (stable diffusion, dalle-2, midjourney) вот короткая подборка, в зависимости от вашего уровня знакомства c ML.
1. Простая интерактивная статья от WP. Как текст превращается в картинки и что такое диффузия? Статья подойдет всем.
2. Статья от Jay Alammar. Уже сложнее, надо понимать что такое embeddings, autoencoder, latent space, UNet. Зато подробные иллюстрации помогают понять архитектуру моделей и как происходит forward pass. А еще если вам больше нравится больше смотреть видео, чем читать статьи, там в конце список видео а-ля How does Stable Diffusion work?
3. Статья от Eugen Yan. Разбор основных идей, которые лежат в основе text-2-image. Плюс в конце есть ссылки на сами статьи, если кто-то захочет почитать сам. Вообще, Eugen Yan - крут. У него понятные разборы, которые сразу пачку статей покрывают + он автор репы https://github.com/eugeneyan/applied-ml.
Короче, если кто-то хочет разобраться в работе text-to-image моделей (stable diffusion, dalle-2, midjourney) вот короткая подборка, в зависимости от вашего уровня знакомства c ML.
1. Простая интерактивная статья от WP. Как текст превращается в картинки и что такое диффузия? Статья подойдет всем.
2. Статья от Jay Alammar. Уже сложнее, надо понимать что такое embeddings, autoencoder, latent space, UNet. Зато подробные иллюстрации помогают понять архитектуру моделей и как происходит forward pass. А еще если вам больше нравится больше смотреть видео, чем читать статьи, там в конце список видео а-ля How does Stable Diffusion work?
3. Статья от Eugen Yan. Разбор основных идей, которые лежат в основе text-2-image. Плюс в конце есть ссылки на сами статьи, если кто-то захочет почитать сам. Вообще, Eugen Yan - крут. У него понятные разборы, которые сразу пачку статей покрывают + он автор репы https://github.com/eugeneyan/applied-ml.
commit history
Как работают text2image модели и как получаются такие качественные изображения? Короче, если кто-то хочет разобраться в работе text-to-image моделей (stable diffusion, dalle-2, midjourney) вот короткая подборка, в зависимости от вашего уровня знакомства c…
Если у вас совсем нет времени, но вы знакомы с терминологией, то вот вам основные идеи, которые лежат в основе моделей. Супер-краткий пересказ статьи Eugen Yan.
+ Diffusion – добавляем гауссовский шум к данным и учимся его предсказывать. На инференсе сэмплим изображение из рандомного шума. (По сути вычитаем шум которые предсказали.) Такие модели могут просто генерить изображения в стиле данных, на котором обучались.
Статья: Denoising Diffusion Probabilistic Models (DDPM; 2020)
+ Text conditioning – добавляем conditioning (опору на текст), чтобы управлять генерацией и получать изображения из текста.
Сначала в Contrastive Language-Image Pre-training (CLIP; 2021) научились сопоставлять изображения и тексты в одно семантическое пространство: вектор текста “щенок лабрадора” и вектор фото щенка лабрадора будут расположены близко. Потом в DALL·E (2021) токенизровали изображение, токенизировали текст и конкатенировали их, получая text_token_1, …, text_token_n, image_token_1, …, image_token_n. Все закинули в трансформер. На инференсе начинали с текстовых токенов и авторегрессионно предсказывали визуальные токены. В DALL·E 2 (aka unCLIP, 2022) использовали conditioning эмбеддинг из CLIP и авторегрессионный процесс из Dalle. Теперь из вектора текста еще предсказывается clip embedding, а потом происходит финальное декодирование в изображение. В Imagen (2022) энкодеры из CLIP заменили на T5 для текста и UNet для изображений. Там сначала генерируют изображение 64x64, а потом делают super-resolution в 1024x1024.
+ Classifier guidance – сильнее двигаем результат в сторону текста, считай управляем степенью влияния промта. В classifier-guidance paper (2021) добавили с определённым весом градиенты с классификатора обученного на шумном ImageNet, чтобы двигать изображение сильнее в сторону класса. Потом в classifier-free guidance (2021) реализовали conditional dropout, иногда заменяя текстовый Промт на Null токен. Изображение с промтом: guidance=1, без промта guidance=0. И теперь модель могла генерировать изображения с разной степенью conditioning (опоры на текст), управляя параметром guidance.
+ Latent space – шум добавляем не к пикселям изображений а к их эмбеддингам. На инференсе из шума сэмплим вектор, а потом декодируем его в изображение. Stable Diffusion (2021) Сначала векторизуем изображение, используя VAE. Потом удаляем шум из полученного вектора с помощью UNet и декодируем полученный вектор. В итоге Stable diffusion учиться и сэмплит быстрее, так как работает не с пикселями, а с сжатыми векторами.
+ Diffusion – добавляем гауссовский шум к данным и учимся его предсказывать. На инференсе сэмплим изображение из рандомного шума. (По сути вычитаем шум которые предсказали.) Такие модели могут просто генерить изображения в стиле данных, на котором обучались.
Статья: Denoising Diffusion Probabilistic Models (DDPM; 2020)
+ Text conditioning – добавляем conditioning (опору на текст), чтобы управлять генерацией и получать изображения из текста.
Сначала в Contrastive Language-Image Pre-training (CLIP; 2021) научились сопоставлять изображения и тексты в одно семантическое пространство: вектор текста “щенок лабрадора” и вектор фото щенка лабрадора будут расположены близко. Потом в DALL·E (2021) токенизровали изображение, токенизировали текст и конкатенировали их, получая text_token_1, …, text_token_n, image_token_1, …, image_token_n. Все закинули в трансформер. На инференсе начинали с текстовых токенов и авторегрессионно предсказывали визуальные токены. В DALL·E 2 (aka unCLIP, 2022) использовали conditioning эмбеддинг из CLIP и авторегрессионный процесс из Dalle. Теперь из вектора текста еще предсказывается clip embedding, а потом происходит финальное декодирование в изображение. В Imagen (2022) энкодеры из CLIP заменили на T5 для текста и UNet для изображений. Там сначала генерируют изображение 64x64, а потом делают super-resolution в 1024x1024.
+ Classifier guidance – сильнее двигаем результат в сторону текста, считай управляем степенью влияния промта. В classifier-guidance paper (2021) добавили с определённым весом градиенты с классификатора обученного на шумном ImageNet, чтобы двигать изображение сильнее в сторону класса. Потом в classifier-free guidance (2021) реализовали conditional dropout, иногда заменяя текстовый Промт на Null токен. Изображение с промтом: guidance=1, без промта guidance=0. И теперь модель могла генерировать изображения с разной степенью conditioning (опоры на текст), управляя параметром guidance.
+ Latent space – шум добавляем не к пикселям изображений а к их эмбеддингам. На инференсе из шума сэмплим вектор, а потом декодируем его в изображение. Stable Diffusion (2021) Сначала векторизуем изображение, используя VAE. Потом удаляем шум из полученного вектора с помощью UNet и декодируем полученный вектор. В итоге Stable diffusion учиться и сэмплит быстрее, так как работает не с пикселями, а с сжатыми векторами.
eugeneyan.com
Text-to-Image: Diffusion, Text Conditioning, Guidance, Latent Space
The fundamentals of text-to-image generation, relevant papers, and experimenting with DDPM.
Решил расширить заметку про английский и написал статью на хабр. Еще добавил туда подборку полезных советов и ссылок, которые мне оставили в комментариях здесь и в Linkedin.
https://habr.com/ru/post/706490/
https://habr.com/ru/post/706490/
Хабр
Как AI помогает в изучении английского? Личный опыт
В начале года я решил поменять работу и начал готовится к собеседованиям. О том, как готовился к алгоритмам, систем дизайну и поведенческому интервью описал в статье «Как я проходил собеседования...
Всем привет! Меня зовут Ибрагим. Сейчас я лид команды данных для претрейна в nebius.
Сейчас я делаю весь machine learning для одного из стартапов в экосистеме TON
Сделал и продолжаю делать с нуля рекомендации (коллаборативка, item2vec, ранкер), рейтинги, персонализированную рекламу, кучу дашбордов, feature storage, детекцию ботов и много разных штук поменьше.
С января по май 2022 был в саббатикале, проходил курсы, качал литкод и английский, читал книги.
До этого почти три года обучал нейронки для ассистентов Салют. Сделал с нуля: систему отлова негатива в Салюте и паре других мест, систему аннотирования сообщений (эмоции, тема и 20+ других признаков), фильтры и ранкер в болталке, тулзу для анализа больших массивов текстов и ускорения разметки из которой вырос внутренний продукт и другие штуки. Было круто создавать продукт с нуля, очень быстро прокачался, за это спасибо моим сенсеям. Подробнее рассказывал в подкасте Яндекса.
Был в самом первом наборе в школу 21, бассейн (месячный отбор в школу) проходил буквально на стройке. Закончил школу 21 в 2021-ом и по итогам написал статью.
По образованию я врач-стоматолог и организатор здравоохранения.
В 2018-ом году закончил с отличием стомат фак Казанского ГМУ, а в 2020-м ординатуру по орг здраву. Во время учебы учился, тусил, работал, организовывал студ весны и занимался волонтерством. Еще написал штук 20 научных статей разного уровня.
Люблю учиться новому, поэтому как-то пробовал себя в стендапе и даже сходил на фестиваль открытого микрофона на ТНТ.
Изначально я начинал вести канал @ibragim_txt для друзей, но потом решил завести еще и этот канал @c0mmit, чтобы делиться заметками про работу и машинное обучение.
Сделал и продолжаю делать с нуля рекомендации (коллаборативка, item2vec, ранкер), рейтинги, персонализированную рекламу, кучу дашбордов, feature storage, детекцию ботов и много разных штук поменьше.
С января по май 2022 был в саббатикале, проходил курсы, качал литкод и английский, читал книги.
До этого почти три года обучал нейронки для ассистентов Салют. Сделал с нуля: систему отлова негатива в Салюте и паре других мест, систему аннотирования сообщений (эмоции, тема и 20+ других признаков), фильтры и ранкер в болталке, тулзу для анализа больших массивов текстов и ускорения разметки из которой вырос внутренний продукт и другие штуки. Было круто создавать продукт с нуля, очень быстро прокачался, за это спасибо моим сенсеям. Подробнее рассказывал в подкасте Яндекса.
Был в самом первом наборе в школу 21, бассейн (месячный отбор в школу) проходил буквально на стройке. Закончил школу 21 в 2021-ом и по итогам написал статью.
По образованию я врач-стоматолог и организатор здравоохранения.
В 2018-ом году закончил с отличием стомат фак Казанского ГМУ, а в 2020-м ординатуру по орг здраву. Во время учебы учился, тусил, работал, организовывал студ весны и занимался волонтерством. Еще написал штук 20 научных статей разного уровня.
Люблю учиться новому, поэтому как-то пробовал себя в стендапе и даже сходил на фестиваль открытого микрофона на ТНТ.
Изначально я начинал вести канал @ibragim_txt для друзей, но потом решил завести еще и этот канал @c0mmit, чтобы делиться заметками про работу и машинное обучение.
commit history pinned «Всем привет! Меня зовут Ибрагим. Сейчас я лид команды данных для претрейна в nebius. Сейчас я делаю весь machine learning для одного из стартапов в экосистеме TON Сделал и продолжаю делать с нуля рекомендации (коллаборативка, item2vec, ранкер), рейтинги,…»
Иллюзия знания и проверка себя.
Ситуация следующая. Изучил какую-то тему, вроде понял, повторил. А потом тебе приятель задает вопрос и выясняется, что знаешь только один поверхностный тезис.
Барбара Оакли называет это иллюзией знания. Тебе кажется, что ты что-то понимаешь или знаешь, но это ложная уверенность. Знание может быть какое угодно. Особенности развития ленточных червей, принципы работы бустинга над деревьями, насколько ты разбираешься в собственном продукте.
Что с этим делать? Быть тем приятелем самому себе и задавать вопросы во время обучения. На эту тему есть пример из жизни.
У меня в медицинском был преподаватель по физ-коллоидной химии. Его никто не любил, на пересдачи к нему ходили 70% потока и даже ходит байка, что в 90х его в подворотне поймали люди в масках по заказу студентов и попугали для смягчения поведения.
Но мне его подход ведения занятий нравился. По теме он задавал вопрос: "Что такое {название темы}". Ты отвечал определением, потом основываясь на определении он спрашивал, "а почему так происходит?" И так несколько раз, погружаясь все глубже. Запомнил только определение? Начнешь сыпаться уже на 2-3 почему и получишь двойку. Если ты не знал ответа, он предлагал сделать предположение. Однако если не разбираешься в самом предмете, разумные предположения не построишь.
Поэтому сейчас, если есть задача именно разобраться, то я устраиваю себе проверку в формате “почему так?”
Про этот метод я слышал и от своего руководителя в ординатуре. Руководитель специализируется на “бережливом производстве (Lean Production)”, а сам метод называется "Пять почему”
Еще у меня в заметках лежит цитата Вадика Мармеладова из старого видео про ЛОТ2046
“Когда у собеседника закончится почему, вот твоё проверочное слово. Вот настолько проработан твой продукт.”
Ситуация следующая. Изучил какую-то тему, вроде понял, повторил. А потом тебе приятель задает вопрос и выясняется, что знаешь только один поверхностный тезис.
Барбара Оакли называет это иллюзией знания. Тебе кажется, что ты что-то понимаешь или знаешь, но это ложная уверенность. Знание может быть какое угодно. Особенности развития ленточных червей, принципы работы бустинга над деревьями, насколько ты разбираешься в собственном продукте.
Что с этим делать? Быть тем приятелем самому себе и задавать вопросы во время обучения. На эту тему есть пример из жизни.
У меня в медицинском был преподаватель по физ-коллоидной химии. Его никто не любил, на пересдачи к нему ходили 70% потока и даже ходит байка, что в 90х его в подворотне поймали люди в масках по заказу студентов и попугали для смягчения поведения.
Но мне его подход ведения занятий нравился. По теме он задавал вопрос: "Что такое {название темы}". Ты отвечал определением, потом основываясь на определении он спрашивал, "а почему так происходит?" И так несколько раз, погружаясь все глубже. Запомнил только определение? Начнешь сыпаться уже на 2-3 почему и получишь двойку. Если ты не знал ответа, он предлагал сделать предположение. Однако если не разбираешься в самом предмете, разумные предположения не построишь.
Поэтому сейчас, если есть задача именно разобраться, то я устраиваю себе проверку в формате “почему так?”
Про этот метод я слышал и от своего руководителя в ординатуре. Руководитель специализируется на “бережливом производстве (Lean Production)”, а сам метод называется "Пять почему”
Еще у меня в заметках лежит цитата Вадика Мармеладова из старого видео про ЛОТ2046
“Когда у собеседника закончится почему, вот твоё проверочное слово. Вот настолько проработан твой продукт.”
Обзор исследований в AI и индустрии за 2022
Под конец года выходит много разных отчетов по индустриям. В октябре вышел State of AI Report 2022. На слайдах описаны основные события и статьи из мира AI за 2022 год. Плюс таких отчетов, что можно обзорно посмотреть на ситуацию в индустрии в разных срезах, а не читать каждую статью самому. Минус, что фокус твоего внимания полностью в руках авторов.
Про сам отчет.
Во-первых, респект авторам за то, что в начале есть краткий глоссарий с определениями и выжимка презентации.
Во-вторых, 80% всей презентации – это два раздела: research, в котором пересказы статей и industry, в котором приведены разные статистики вроде количества статей(стало больше) или объема инвестиций (стало меньше).
Мое внимание зацепили следующие моменты, которые можно объединить в идею повышения adoption разных AI инструментов. Про диффузионные модели и text2image генерацию картинок писать не буду, итак уже все слышали. Поэтому тут будет про LLM (Large Language Models = Большие Языковые модели)
1. Универсальность подхода языкового моделирования. Подход, когда взяли трансформер, сформулировали self-supervised задачу (MLM=masked language modelling например) на последовательных данных, часто оказывается sota (лучшим) решением на многих задачах. От предсказания структуры белка до TTS (text2speech).
Почему – это круто? Потому что применяя один подход, можно создать много полезных инструментов. Может, когда-нибудь придем к “one model to rule them all”. Рабочие инструменты, тоже уже есть: Copilot активно использую, когда пишу код, экономит время.
2. Open source аналоги больших разработок. Года два назад я чаще слышал мнение про абсолютную монополию больших компаний в AI. Максимум, что можешь, это подрубаться по api к их продуктам. Однако, Open source сообщество имплементировали (реализовали), клонировали или доработали все основные модели (GPT3, Dalle, AlphaFold) быстрее, чем ожидалось.
Почему – это круто? Потому что open source доступен всем, значит можно строить больше разных инструментов. Ограничивающий фактор – это ресурсы, так как, у Bloom 175B, например, чисто для инференса весА даже в float16 весят 329GB. Но можно запускать распределенно на разных устройствах.
3. Текущие LLM (Large Language Models) недотренированы! OpenAi в 2020-ом сформулировали Scaling Law: если есть бюджет, то размер модели надо увеличивать быстрее, чем размер датасета. DeepMind переформулировали, что рост должен быть с одинаковым темпом. Дальше, думаю, будут работы про повышение качества данных и их подготовку. Не огромные модели проще и дешевле запускать. Опять же упрощает доставку моделей до конечного пользователя в виде инструмента.
Отдельно прикреплю слайд с итогами от самих авторов.
Под конец года выходит много разных отчетов по индустриям. В октябре вышел State of AI Report 2022. На слайдах описаны основные события и статьи из мира AI за 2022 год. Плюс таких отчетов, что можно обзорно посмотреть на ситуацию в индустрии в разных срезах, а не читать каждую статью самому. Минус, что фокус твоего внимания полностью в руках авторов.
Про сам отчет.
Во-первых, респект авторам за то, что в начале есть краткий глоссарий с определениями и выжимка презентации.
Во-вторых, 80% всей презентации – это два раздела: research, в котором пересказы статей и industry, в котором приведены разные статистики вроде количества статей
1. Универсальность подхода языкового моделирования. Подход, когда взяли трансформер, сформулировали self-supervised задачу (MLM=masked language modelling например) на последовательных данных, часто оказывается sota (лучшим) решением на многих задачах. От предсказания структуры белка до TTS (text2speech).
Почему – это круто? Потому что применяя один подход, можно создать много полезных инструментов. Может, когда-нибудь придем к “one model to rule them all”. Рабочие инструменты, тоже уже есть: Copilot активно использую, когда пишу код, экономит время.
2. Open source аналоги больших разработок. Года два назад я чаще слышал мнение про абсолютную монополию больших компаний в AI. Максимум, что можешь, это подрубаться по api к их продуктам. Однако, Open source сообщество имплементировали (реализовали), клонировали или доработали все основные модели (GPT3, Dalle, AlphaFold) быстрее, чем ожидалось.
Почему – это круто? Потому что open source доступен всем, значит можно строить больше разных инструментов. Ограничивающий фактор – это ресурсы, так как, у Bloom 175B, например, чисто для инференса весА даже в float16 весят 329GB. Но можно запускать распределенно на разных устройствах.
3. Текущие LLM (Large Language Models) недотренированы! OpenAi в 2020-ом сформулировали Scaling Law: если есть бюджет, то размер модели надо увеличивать быстрее, чем размер датасета. DeepMind переформулировали, что рост должен быть с одинаковым темпом. Дальше, думаю, будут работы про повышение качества данных и их подготовку. Не огромные модели проще и дешевле запускать. Опять же упрощает доставку моделей до конечного пользователя в виде инструмента.
Отдельно прикреплю слайд с итогами от самих авторов.
Почти полгода пользуюсь Copilot, экономит время при написании кода и иногда даже приятно удивляет.
Решил перечитать оригинальную статью про Codex, на базе которого он работает. Как итог – собрал материал с советами разной степени очевидности на основе своего опыта и по словам создателей.
Пишите в комментариях про свой опыт использования Copilot и ChatGPT для программирования, для каких кейсов используете, какие есть альтернативы?
https://telegra.ph/Sovety-po-ispolzovaniyu-Copilot-na-osnove-originalnoj-stati-Codex-01-18
Решил перечитать оригинальную статью про Codex, на базе которого он работает. Как итог – собрал материал с советами разной степени очевидности на основе своего опыта и по словам создателей.
Пишите в комментариях про свой опыт использования Copilot и ChatGPT для программирования, для каких кейсов используете, какие есть альтернативы?
https://telegra.ph/Sovety-po-ispolzovaniyu-Copilot-na-osnove-originalnoj-stati-Codex-01-18
Telegraph
Советы по использованию Copilot на основе оригинальной статьи Codex
Copilot – система автодополнения кода от GitHub на основе модели Codex. Модель завернули в API и дали доступ через расширение для IDE (среды разработки). Я регулярно пользуюсь Copilot – экономит время и заменяет поиск кода в интернете. Делюсь советами разной…
Посоветуйте курс для программирования с нуля
Хочу найти курс, чтобы советовать друзьям и знакомым, которые хотят попробовать программирование. Или может быть не курс, а набор курсов.
Лучше бесплатный, но можно и платный.
Лучше на русском, но можно и на англ.
Примерные черты определил для себя так:
+ На одном из популярных языков объясняют основные концепты (переменные, ветвления, циклы…).
+ Это не формат “вот вам кусок кода, вставьте пропущенную букву, чтобы код заработал.” А нужно позапускать код у себя.
+ Есть занятия про командную строку, гит и то, как запускать у себя код. Чтобы на выходе человек мог скачать и запустить готовый проект с гита.
+ Практика более приближенная к жизни или просто интересная, а не задачи типа “напишите код, чтобы собрать спираль из чисел”.
+ В конце есть проект, где что-то нужно собрать с нуля.
Я бы посоветовал такие курсы:
1. Основы программирования: CS50x и видео лекций
2. Про гит итп: The Missing Semester of Your CS Education
3. Придумать себе проект и сделать с нуля. (Бота в телеге/Веб сервис/Приложуху на IOS)
Минус данного набора, что он на 100+ часов и может отпугнуть. А еще cs50 на русском есть только за 2016 год.
Хочется что-то похожее, но попроще и часов на 20-30. Такое реально найти?
P.S. Буду обновлять список того, что посоветовали:
+ Бесплатные курсы с Hexlet
+ Hyperskill от JetBrains
+ PHP book
+ Курсы со степика "Поколение Python" и его продолжение
+ Python, Bash and SQL Essentials for Data Engineering
+ Scrimba
+ Javarush
+ Code Basics
+ Основы программирования со Stepik
Может у вас есть опыт прохождения чего-то из списка и поделитесь отзывом?
Хочу найти курс, чтобы советовать друзьям и знакомым, которые хотят попробовать программирование. Или может быть не курс, а набор курсов.
Лучше бесплатный, но можно и платный.
Лучше на русском, но можно и на англ.
Примерные черты определил для себя так:
+ На одном из популярных языков объясняют основные концепты (переменные, ветвления, циклы…).
+ Это не формат “вот вам кусок кода, вставьте пропущенную букву, чтобы код заработал.” А нужно позапускать код у себя.
+ Есть занятия про командную строку, гит и то, как запускать у себя код. Чтобы на выходе человек мог скачать и запустить готовый проект с гита.
+ Практика более приближенная к жизни или просто интересная, а не задачи типа “напишите код, чтобы собрать спираль из чисел”.
+ В конце есть проект, где что-то нужно собрать с нуля.
Я бы посоветовал такие курсы:
1. Основы программирования: CS50x и видео лекций
2. Про гит итп: The Missing Semester of Your CS Education
3. Придумать себе проект и сделать с нуля. (Бота в телеге/Веб сервис/Приложуху на IOS)
Минус данного набора, что он на 100+ часов и может отпугнуть. А еще cs50 на русском есть только за 2016 год.
Хочется что-то похожее, но попроще и часов на 20-30. Такое реально найти?
P.S. Буду обновлять список того, что посоветовали:
+ Бесплатные курсы с Hexlet
+ Hyperskill от JetBrains
+ PHP book
+ Курсы со степика "Поколение Python" и его продолжение
+ Python, Bash and SQL Essentials for Data Engineering
+ Scrimba
+ Javarush
+ Code Basics
+ Основы программирования со Stepik
Может у вас есть опыт прохождения чего-то из списка и поделитесь отзывом?
cs50.harvard.edu
CS50x 2022
Harvard University's introduction to the intellectual enterprises of computer science and the art of programming.
Антропоморфизация больших языковых моделей
Не очень люблю говорить в компаниях про LLMs (Large Language Models: GPT, ChatGPT, LaMDA ...), потому что почти сразу тезис "скоро нейронные сети обретут сознание и всех поработят" становится основным. Я в таких случаях, кратко рассказываю как устроены модели. О том, что генеративные модели по принципу работают как автодополнение на телефоне. О том, что сети показали много текстов и во время обучения задача была в предсказании следующего слова при условии предыдущих. И о том, что обретение сознания не совсем верный тезис в подобном контексте.
Однако, в медиа постоянно выходят статьи с заголовками типа:
1. The Google engineer who thinks the company’s AI has come to life
2. 'I want to be alive': Has Microsoft's AI chatbot become sentient?
Давно искал что-то осмысленное про то, как люди наделяют человеческими свойствами языковые модели. И вот мне на глаза попалась статья Talking About Large Language Models от профессора Murray Shanahan из Imperial College
Ключевые тезисы такие:
1. Основной принцип работы LLM: генерация статистически вероятных продолжений последовательностей слов.
2. Многие задачи, для решения которых вроде бы нужен разум человека, можно свести к задаче предсказания следующего токена (слова).
3. Люди часто прибегают к антропормфизации (очеловечиванию) разных объектов для упрощения сложных процессов. (“мой телефон думает, что мы в другом месте.”) Это называется Intentional Stance.
4. Исследователи в своих статьях активно используют слова "знает", "верит", "думает" по отношению к LLM, подразумевая конкретные процессы вычислений.
5. Иногда видя слова "знает", "верит", "думает" люди могут начать ложно ожидать большего поведения, чем такие модели имеют.
В статье мне понравилось, что последовательно разбираются аргументы почему эти слова не очень корректно использовать в привычном их значении даже если модели могут:
• отвечать на вопросы которых не было в трейне
• ходить в другие системы
• отвечать по данным другой модальности (например, изобржаниям)
• выполнять задачи в реальном мире с помощью манипуляторов
Кому лень читать всю статью, сделал более подробный пересказ.
https://telegra.ph/Konspekt-stati-Talking-About-Large-Language-Models-02-19
Не очень люблю говорить в компаниях про LLMs (Large Language Models: GPT, ChatGPT, LaMDA ...), потому что почти сразу тезис "скоро нейронные сети обретут сознание и всех поработят" становится основным. Я в таких случаях, кратко рассказываю как устроены модели. О том, что генеративные модели по принципу работают как автодополнение на телефоне. О том, что сети показали много текстов и во время обучения задача была в предсказании следующего слова при условии предыдущих. И о том, что обретение сознания не совсем верный тезис в подобном контексте.
Однако, в медиа постоянно выходят статьи с заголовками типа:
1. The Google engineer who thinks the company’s AI has come to life
2. 'I want to be alive': Has Microsoft's AI chatbot become sentient?
Давно искал что-то осмысленное про то, как люди наделяют человеческими свойствами языковые модели. И вот мне на глаза попалась статья Talking About Large Language Models от профессора Murray Shanahan из Imperial College
Ключевые тезисы такие:
1. Основной принцип работы LLM: генерация статистически вероятных продолжений последовательностей слов.
2. Многие задачи, для решения которых вроде бы нужен разум человека, можно свести к задаче предсказания следующего токена (слова).
3. Люди часто прибегают к антропормфизации (очеловечиванию) разных объектов для упрощения сложных процессов. (“мой телефон думает, что мы в другом месте.”) Это называется Intentional Stance.
4. Исследователи в своих статьях активно используют слова "знает", "верит", "думает" по отношению к LLM, подразумевая конкретные процессы вычислений.
5. Иногда видя слова "знает", "верит", "думает" люди могут начать ложно ожидать большего поведения, чем такие модели имеют.
В статье мне понравилось, что последовательно разбираются аргументы почему эти слова не очень корректно использовать в привычном их значении даже если модели могут:
• отвечать на вопросы которых не было в трейне
• ходить в другие системы
• отвечать по данным другой модальности (например, изобржаниям)
• выполнять задачи в реальном мире с помощью манипуляторов
Кому лень читать всю статью, сделал более подробный пересказ.
https://telegra.ph/Konspekt-stati-Talking-About-Large-Language-Models-02-19
🐦 Твиттер выложил код со своими рекомендациями для вкладки For You.
Ссылки
Статья в блоге твиттера
Основной код
Код ML
Аудио обсуждение от твиттера (пока не слушал)
Пролистал репозиторий, твиттер, комментарии на HN и решил поделиться тем, что нашел.
Важный момент – меня интересуют более практические моменты, которые можно будет применить в своей работе.
Поэтому сразу подборка хайпа, чтобы потом про него не писать:
+ Смотрят на метрики трафика и взаимодействия по авторам во время АБ тестов: Маск, демократы/республиканцы, “power users” – захардкоженный список? Многие захейтили твиттер, но я проблем не вижу, стандартная практика, чтобы нечаянно не уронить трафик некоторым авторам.
UPD:
Кажется, что этот кусок в спешке потерли
за ссылку спасибо @oktai15
+ Бустят авторов с синей галочкой (а с 15 апреля в рекомендациях от не-подписок оставят только их)
+ Много чего не выложили (модели, данные, еще по лицензии нельзя использовать код для коммерческих целей), зато есть описание, код некоторых модулей и сопроводительные README.md
🐦 Обзор.
В твиттере есть две ленты:
Following – хронологическая лента ваших подписок.
For you - умная лента. Про нее мы и будем говорить. Задача этой ленты с одной стороны показывать интересные посты ваших подписок (In-Network) + показывать контент не подписок для exploration (Out-Network). Соотношение 50/50. Такое соотношение звучит, как бейзлайн. Интересно, это действительно самое оптимальное соотношение по АБ или просто забили?
Термины для удобства:
+ Подписки – аккаунты на которые я подписан.
+ Эмбеддинг – вектор (набор чисел), отражающий пост/автора/юзера.
В репозитории есть схема и таблица описание основных модулей. Советую посмотреть.
Общая схема рекомендаций стандартная:
Генерация кандидатов -> Ранжирование -> Пост-обработка эвристиками.
Генерация кандидатов.
В случае твиттов из подписок (In-Network source) -> берем ваши подписки -> генерим фичи уровня юзер – автор -> скорим простым ранкером (модуль называется RealGraph модель GBDT) на вероятность взаимодействия.
Потом берем последние посты топа предсказанных авторов и скорим посты подписок early bird (модель ЛогРег).
Это основной генератор постов из подписок. Отсюда получаем ~750 постов.
Out-network source (посты от не подписок).
1. Социальный граф.
1. Твитты, с которым взаимодействовали мои подписки.
2. Колаборитвная фильтрация. Лайки юзеров, которые лайкают похожие со мной посты.
2. Эмбеддинги.
1. Разреженные эмбеддинги от модели SimClusters. Юзеры и твиты отображаются в пространство “сообществ”. Статью не читал, пока не оч понял как все устроено.
2. Эмбеддинги от модели TwinHW размерность ~200. Обучают на графах юзер-автор, таргет подписка и юзер-твит, таргет взаимодействие. На инференсе смотрим близость юзера к твиту, юзера к авторам. Статья
Ранжирование.
После генерации кандидатов мы получаем ~1,500 твиттов, которые могут быть нам интересны. Дальше работает ранкер (сеть с 48Mln параметров, архитектура: parallel masknet Задача ранкера отсортировать эти твиты используя больше признаков (информации).
Код “heavy ranker”
Интересности.
1. Ранкер обучаем на несколько задач. На выходе сигмоиды, предсказываем вероятность разных действий. Список действий тут.
2. Предсказанные вероятности складываем с весами. Максимальный положительный вес – is_replied_reply_engaged_by_author или вероятность, что автор поста ответит на ваш комментарий на его твит. Наиболее отрицательный вес – is_report_tweet_clicked или что вы пожалуетесь на твит.
3. Фичи для обучения ранкера (информация, на основе которой предсказываются вероятности) – в основном счётчики (ожидаемо). Например сколько раз вы лайкали автора за 50 дней. Есть short-term (30min-3days) и long-term (50 days) статистики. Еще заметил, что в название user_author фичей есть версии так, что можно предположить какие фичи постепенно добавляли.
Ссылки
Статья в блоге твиттера
Основной код
Код ML
Аудио обсуждение от твиттера (пока не слушал)
Пролистал репозиторий, твиттер, комментарии на HN и решил поделиться тем, что нашел.
Важный момент – меня интересуют более практические моменты, которые можно будет применить в своей работе.
Поэтому сразу подборка хайпа, чтобы потом про него не писать:
+ Смотрят на метрики трафика и взаимодействия по авторам во время АБ тестов: Маск, демократы/республиканцы, “power users” – захардкоженный список? Многие захейтили твиттер, но я проблем не вижу, стандартная практика, чтобы нечаянно не уронить трафик некоторым авторам.
UPD:
Кажется, что этот кусок в спешке потерли
за ссылку спасибо @oktai15
+ Бустят авторов с синей галочкой (а с 15 апреля в рекомендациях от не-подписок оставят только их)
+ Много чего не выложили (модели, данные, еще по лицензии нельзя использовать код для коммерческих целей), зато есть описание, код некоторых модулей и сопроводительные README.md
🐦 Обзор.
В твиттере есть две ленты:
Following – хронологическая лента ваших подписок.
For you - умная лента. Про нее мы и будем говорить. Задача этой ленты с одной стороны показывать интересные посты ваших подписок (In-Network) + показывать контент не подписок для exploration (Out-Network). Соотношение 50/50. Такое соотношение звучит, как бейзлайн. Интересно, это действительно самое оптимальное соотношение по АБ или просто забили?
Термины для удобства:
+ Подписки – аккаунты на которые я подписан.
+ Эмбеддинг – вектор (набор чисел), отражающий пост/автора/юзера.
В репозитории есть схема и таблица описание основных модулей. Советую посмотреть.
Общая схема рекомендаций стандартная:
Генерация кандидатов -> Ранжирование -> Пост-обработка эвристиками.
Генерация кандидатов.
В случае твиттов из подписок (In-Network source) -> берем ваши подписки -> генерим фичи уровня юзер – автор -> скорим простым ранкером (модуль называется RealGraph модель GBDT) на вероятность взаимодействия.
Потом берем последние посты топа предсказанных авторов и скорим посты подписок early bird (модель ЛогРег).
Это основной генератор постов из подписок. Отсюда получаем ~750 постов.
Out-network source (посты от не подписок).
1. Социальный граф.
1. Твитты, с которым взаимодействовали мои подписки.
2. Колаборитвная фильтрация. Лайки юзеров, которые лайкают похожие со мной посты.
2. Эмбеддинги.
1. Разреженные эмбеддинги от модели SimClusters. Юзеры и твиты отображаются в пространство “сообществ”. Статью не читал, пока не оч понял как все устроено.
2. Эмбеддинги от модели TwinHW размерность ~200. Обучают на графах юзер-автор, таргет подписка и юзер-твит, таргет взаимодействие. На инференсе смотрим близость юзера к твиту, юзера к авторам. Статья
Ранжирование.
После генерации кандидатов мы получаем ~1,500 твиттов, которые могут быть нам интересны. Дальше работает ранкер (сеть с 48Mln параметров, архитектура: parallel masknet Задача ранкера отсортировать эти твиты используя больше признаков (информации).
Код “heavy ranker”
Интересности.
1. Ранкер обучаем на несколько задач. На выходе сигмоиды, предсказываем вероятность разных действий. Список действий тут.
2. Предсказанные вероятности складываем с весами. Максимальный положительный вес – is_replied_reply_engaged_by_author или вероятность, что автор поста ответит на ваш комментарий на его твит. Наиболее отрицательный вес – is_report_tweet_clicked или что вы пожалуетесь на твит.
3. Фичи для обучения ранкера (информация, на основе которой предсказываются вероятности) – в основном счётчики (ожидаемо). Например сколько раз вы лайкали автора за 50 дней. Есть short-term (30min-3days) и long-term (50 days) статистики. Еще заметил, что в название user_author фичей есть версии так, что можно предположить какие фичи постепенно добавляли.
Эвристики для пост-фильтрации.
После ранжирования применяем эвристики. Стандартные штуки вроде фильтра скрытых вами авторов и соблюдение баланса подписок/неподписок. Интересно, что есть Social Proof – не показывать Out-of-Network твиты с которыми не взаимодействовал никто из ваших подписок.
Еще странно, что для повышения diversity есть только “убрать подряд идущие посты одного автора”. Неужели они по эмбеддингам/топикам не повышают разнообразие в финальном списке?
В дальнейшем думаю чуть более подробно посмотреть на модули тяжелого ранкера и SimClusters/TwinHW. И на модуль Trust and safety Правда самого интересного (анти-бот и анти-спам) там нет и не будет, чтобы не абьюзили.
После ранжирования применяем эвристики. Стандартные штуки вроде фильтра скрытых вами авторов и соблюдение баланса подписок/неподписок. Интересно, что есть Social Proof – не показывать Out-of-Network твиты с которыми не взаимодействовал никто из ваших подписок.
Еще странно, что для повышения diversity есть только “убрать подряд идущие посты одного автора”. Неужели они по эмбеддингам/топикам не повышают разнообразие в финальном списке?
В дальнейшем думаю чуть более подробно посмотреть на модули тяжелого ранкера и SimClusters/TwinHW. И на модуль Trust and safety Правда самого интересного (анти-бот и анти-спам) там нет и не будет, чтобы не абьюзили.