Skip to content

Latest commit

 

History

History
719 lines (443 loc) · 40.4 KB

PyCon.DE_2018_notes.md

File metadata and controls

719 lines (443 loc) · 40.4 KB

Заметки с PyCon.DE 2018

Расписание: https://de.pycon.org/schedule/

Видео всех докладов: https://administraitor.video/edition/PyCon.DE/2018

Все посещенные доклады

Первый день

  1. Quantum Computing
  2. Germany's next topic model
  3. Cython to speed up your Python code
  4. Active Learning
  5. A Day Has Only 24±1 Hours
  6. Productionizing your ML code seamlessly (Yelp)
  7. How type annotations make your code better
  8. Lightning talks

Второй день

  1. Keynote: Wes McKinney (создатель pandas)
  2. Deep Learning with PyTorch for more Fun and Profit (Part II)
  3. Reproducibility, and Selection Bias in Machine Learning
  4. Data science complexity and solutions in real industrial projects
  5. PyTorch as a scientific computing library: past, present and future
  6. Processing Geodata using Python
  7. Put your data on a map
  8. Observe all your applications
  9. Where the heck is my memory
  10. Lightning talks

Третий день

  1. Keynote: Emmanuelle Gouillart
  2. Strongly typed datasets in a weakly typed world
  3. Satellite data is for everyone
  4. Python Decorators: Gift or Poison

Спринты и воркшоп PyLadies

Introduction and practical experience about Quantum Computing using the Python libraries from IBM and Google

Описание: https://de.pycon.org/schedule/talks/introduction-and-practical-experience-about-quantum-computing-using-the-python-libraries-from-ibm-and-google/

Видео: https://www.youtube.com/watch?v=dDPSmTGVvZE&feature=youtu.be

Мотивация: симуляция физических процессов должна быть согласована с их квантовой природой

Немного истории

Как можно использовать квантовые эффекты для с создания кубитов (для хранения информации в квантовом компьютере)

Технологические вызовы: охлаждение (для уменьшения шума), связи между кубитами

Сегодня: десятки кубитов

Сравнение с классическим подходом. Не для буквальных вычислений, но для аппроксимаций

Инфраструктура, симуляторы. Есть собранные контейнеры

Как использовать

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

Наверх к оглавлению

Germany's next topic model

Описание: https://de.pycon.org/schedule/talks/germany-s-next-topic-model/

Видео: https://youtu.be/sI7VpFNiy_I

Доклад про выявление топиков в текстах путем представления слов как графа с некоторой метрикой близости по смыслу и выделения в этом графе кластеров-тем

Как используют в HolidayCheck (немецкий агрегатор отелей):

  • Разбиение отелей по похожести отзывов - видны кластеры пляжного отдыха, hiking, ..
  • Автоматические ответы на вопросы типа "есть ли телевидение на немецком?" без необходимости в совпадении лексики

Строят матрицу близости слов, далее:

  • Стандартный подход неявно предполагает, что темы распределены по документам, но в случае отзывов на отели дают один большой кластер "отзыв на отель"
  • Используются infomap community detection алгоритмы (говорит, практически как кластеризация для графов, только для сетей)

Обзор их решения Чтобы не ставить ограничение "одно слово в одной теме", используются fuzzy models

Тут должна быть классная визуализация сети слов с выделенными communities

Наверх к оглавлению

Cython to speed up your Python code

Описание: https://de.pycon.org/schedule/talks/cython-to-speed-up-your-python-code/

Видео: https://youtu.be/zx0wMxuh-wk (доклад переаписывали из-за проблем с оборудованием во время первой попытки)

Небольшое введение про проект trustyou.com (?) и разнообразие использующихся там питоньих тулз

Используют для текстов NLTK и хотят сделать его быстрее (спойлер: ускорили на 30%)

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

Ещё пример: ускорение difflib, диффилки из стандартной библиотеки питона, причем про последовательности ничего не знаем

  • Просто перекомпиляция под cython 50->36 секунд на замеры бенчмарка
  • Указание типов вспомогательных переменных: 36->31 секунд
  • Можно смотреть разметку "эта строчка уже совсем сишная, а эта ещё питонья" и думать, как улучшать дальше

Наверх к оглавлению

Active Learning - Building Semi-supervised Classifiers when Labeled Data is not Available

Описание: https://de.pycon.org/schedule/talks/active-learning-building-semi-supervised-classifiers-when-labeled-data-is-not-available/

Видео: https://youtu.be/0efyjq5rWS4

Слайды к этому докладу и ещё паре от той же компании есть здесь: https://github.com/rosen-group/conferences/tree/master/PyConDE/2018 Компания предоставляет сервис диагностики всяких сложных систем (на стенде показывают свою железку для проверки труб)

Основной вопрос: как выбирать данные, требующие разметки человеком, так, чтобы получить наилучшую точность, потратив на разметку по возможности меньше усилий

  • Брать для разметки случайные объекты - бейзлайн
  • cluster homogenity: кластеризовать неразмеченные данные, брать объекты из кластеров равномерно/пропорционально/... (больше про exploration)
  • uncertainty sampling: брать объекты, про которые классификатор наименее уверен в их классе (больше про explotation). Есть риск сконцентрироваться на выбросах
  • query-by-committee: натренировать несколько классификаторов, брать объекты, где они больше всего несогласны
  • expected model change: считаем по всем классам, какова вероятность, что разметка объекта этим классом изменит наш классификатор, берём объект с наибольшим ожиданием
  • expected error reduction: аналогично предыдущему, но по уменьшению ошибки классификатора Чем дальше, тем больше сложностей с вычислением Какой выбрать - все) холодный старт - первые, дальше комбинировать, тестировать

Как тестировать - взять полностью размеченный датасет и симулировать онлайн-работу

Когда остановиться? Закончились деньги, модель сошлась, любой другой критерий Они используют tsne для визуализации, смотрят глазами, что классы устаканились

В конце ссылки на python-пакеты по теме (один слайд про питон, круто)

Лектора спрашивают, когда, по его мнению, можно будет отказаться от разметки людьми. Ответ - мы обязаны использовать ручную разметку по закону 😳 Но вообще перспективы хорошие - те же ганы

Говорит, поверх алгоритмов выбора можно навернуть ещё один алгоритм выбора, который бы по прежнему перформансу выбирал алгоритм для текущей итерации

Техника для проверки труб от компании, делавшей предыдущий доклад. Двигается со скоростью 2-5 метров в секунду, внутри начинка из десятков сенсоров

Наверх к оглавлению

A Day Has Only 24±1 Hours: import pytz

Описание: https://de.pycon.org/schedule/talks/a-day-has-only-241-hours-import-pytz/

Видео: https://youtu.be/IRGKlwkio0Y

Теперь доклад про таймзоны

Боль-1 на картинке Боль-2: повторные запросы текущего времени могут привести к неожиданным проблемам (смена суток, перевод часов)

Текущие таймзоны в мире (больше 400!)

Смена таймзон отдельных точек по географии с годами (по y - отклонения от Гринвича). Зигзаги - переход на зимнее/летнее время. Вертикальные линии - "прыгающие" между государствами острова

Очень прикольный доклад, он наверняка есть в записи, посмотрите. Поддержка tzdata ведется через почтовую рассылку, куда все могут прислать инфу типа "в местной газете написали, что страна N переходит на такое время" или "прилетел в страну M, а тут явно не та таймзона, как мы думали"

Наверх к оглавлению

Productionizing your ML code seamlessly

Описание: https://de.pycon.org/schedule/talks/productionizing-your-ml-code-seamlessly/

Видео: https://youtu.be/M0A8GaT5qns

Следующий доклад: productionizing your code seamlessely от ребят из yelp. Зал переполнен :)

Общий вид

Подробнее по пунктам:

  • Data source. Данные могут обновляться
  • Training data. Как часто тренировать модель? Нужна стратегия на случай падений. Масштабирование?
  • Evaluation. Согласованность с продакшеном, классическая метрика + взгляд со стороны бизнеса, учитывать feedback loops. Хорошо проверять дополнительно на фиксированном датасете
  • Predictions: падения, масштабирование, как и для обучения. Также вопрос использования предсказаний:
  • Measuring success. Чекать бизнес-метрики, которые пытаемся двигать. АБТ. (Особенно в случае рекомендаций) надо проверять, что нет смещения в сторону положительных случаев - мб пользователь и без модели создал бы аккаунт / сделал что-то хорошее.

Общие советы

Вычисление фичей и обработка данных должны быть одинаковым при обучении и применении (🙄)

Наверх к оглавлению

How type annotations make your code better

Описание: https://de.pycon.org/schedule/talks/how-type-annotations-make-your-code-better/

Видео: https://youtu.be/hHxZkdDA-l0

Agenda: maintanability, predictability, developer expirience, toolset

Про maintainability

Заодно рефакторинг

Вспомогательные штуки для используемых библиотек

Кроме очевидных преимуществ также стимуляция к хорошим паттернам

Developer experience: базовая документация на виду, редактор всё подсказывает. Тесты всё ещё нужны, но меняется уровень рассмотрения проблем

Тулы

Наверх к оглавлению

Lightning talks

Описание: список тем ниже

Видео: можно найти по названию здесь https://administraitor.video/edition/PyCon.DE/2018

Наверх к оглавлению

Keynote: Wes McKinney (создатель pandas)

Описание: https://de.pycon.org/blog/pyconde-and-pydata-karlsruhe-2018-keynote-wes-mckinney/

Видео: https://youtu.be/uETG3bn4kow

Долгое вступление про мотивацию и пользу анализа данных для мира закончилось экзистенциальными кризисами о_О

Я немного потерялась в докладе дальше, Вес рассказывал про историю того, как он начал делать pandas, какие сложности у них есть, и как он логически пришел к apache arrow

Наверх к оглавлению

Deep Learning with PyTorch for more Fun and Profit (Part II)

Описание: https://de.pycon.org/schedule/talks/deep-learning-with-pytorch-for-more-fun-and-profit-part-ii/

Видео: https://youtu.be/yB1rUfPILFY

Доклад одного из организаторов конфы про deep learning. Написано, что вторая часть, первая была не на этой конференции, а на других (есть видео)

Предыдущие доклады

Рассказывает краткое содержание предыдущих серий:

  • Развлекался переносом стилей старых комиксов на новые, а также на всё подряд, конечно :)

Следующий шаг - аудио спектакли. Хотел генерировать целиком - сюжет, диалоги, человеческую речь, обложку, фоновые звуки

Текст: нашел сделанные фанатами скрипты, собрал имена, взял сетку Andrey Karpathy для Шекспира, получилось мало вразумительно Взял чатбота по Стартреку, тоже не очень

Переключился на обложку, получилось очень классно

Среди этих картинок половина оригинальная, половина сгенерирована

Эти сгенерированы

Генерация звука: взял датасет с чтением английских текстов, взял сетку nvidia, тренировал несколько дней - получилось неплохо. Но с немецким все оказалось сложнее 😂 Собирал датасет из новостных статей, для которых были аудиоверсии, прогонял их через google transcript, чтобы получить разметку фраз по времени. Обучил, получился жуткий голос, но в целом разобрать текст можно

Немного из серии "смешно, если бы не было так грустно"

Выводы из эксперимента (справа выдержка из какой-то немецкоязычной статьи)

Еще немного мыслей про AI vs Marketing B-bingo

Наверх к оглавлению

Reproducibility, and Selection Bias in Machine Learning

Описание: https://de.pycon.org/schedule/talks/reproducibility-and-selection-bias-in-machine-learning/

Видео: https://youtu.be/MOBs6MNepDk

Следующий доклад: что делать, если кросс-валидации недостаточно

Определение, первая часть доклада про reproducible. Классический подход - githib + jupyter.

Список про воспроизводимость кода в целом. Дальше будем конкретно про ml

Нужно фиксировать все рандомные параметры, притом далеко не всегда они видны в первом слое апи

Подробнее про популярные либы. Theano берет из numpy

С кудой всё плохо, дальше были слайды с открыми issues в тензорфлоу и пайторче

Переходим к части про selection bias. Пара слайдов про hold-out, про bias-variance problem, learning curves, разные варианты разбиения для кросс-валидации. Опять напоминание фиксировать random seed

Его предложение - несколько cv с разными seed, внизу со ссылкой на the elements рекомендуемые примеры для подбора параметров и для выбора модели

Его проект для этой цели (wip)

Пример применения для его биологического проекта

Наверх к оглавлению

Data science complexity and solutions in real industrial projects

Описание: https://de.pycon.org/schedule/talks/data-science-complexity-and-solutions-in-real-industrial-projects/

Видео: https://youtu.be/bmtGr0LSb_Y

Ещё один доклад от ребят, которые предоставляют сервис по проверке труб

Немного про их данные

В производстве тестируются на реально повреждённых трубах

Доклад про то, как получать данные с этапа верификации результатов исследования заказчиком на этап обучения моделей. Проблемы перечислены на слайде. Решения не особо замысловатые, слайды есть тут https://github.com/rosen-group/conferences/blob/master/PyConDE/2018/DataScienceComplexityAndSolutionsInRealIndustrialProjects_by_AMiller_ROSEN_Group.pdf

Как делается верификация - лазером без остановки работы трубопровода или рентгеном после выкапывания опасного участка

Наверх к оглавлению

PyTorch as a scientific computing library: past, present and future

Описание: https://de.pycon.org/schedule/talks/pytorch-as-a-scientific-computing-library-past-present-and-future/

Видео: https://youtu.be/0Y4kY6PnYfM

Доклад про advanced analytics today оказался слишком водянистым, перешла на доклад про pytorch. Adam Paszke рассказывает свежий релиз 1.0. Добавили script-mode

Было

Стало

Текущие возможности

Как перевести

Пример использования

Пример

WIP

Пример достигнутого

Куда же без плюсов)

Пример

Наверх к оглавлению

Processing Geodata using Python

Описание: https://de.pycon.org/schedule/talks/processing-geodata-using-python/

Видео: https://youtu.be/49QwoR2aG74

Показывать будет тетрадку, вверху ссылка на нее

Обе векторные + pandas

Примеры про shapely, работа с многоугольниками: рисование, бинарные операции, в т.ч. contains, touches, crosses; сохранение в виде текста (wkt)

Fiona: больше возможностей для метаданных. Пример на открытых данных про аэропорты, про страны

Для перевода между системами координат pyproj

Geopandas Другой пример про датасет про города с населением более 5к человек Добавляем в dataframe колонку типа shapely.point, легко рисовать, проверять принадлежность полигонам

Folium: карты от open street map. Совместимо со всем предыдущим, можно рисовать красивые интерактивные (но не динамические) карты.

Ipyleaflet - ещё и динамические карты (внутри jupyter)

Вопрос про масштабирование - при использовании pandas всё в памяти, для многих полигонов лучше использовать напрямую фиону

Наверх к оглавлению

Put your data on a map

Описание: https://de.pycon.org/schedule/talks/put-your-data-on-a-map/

Видео: https://youtu.be/CdgI-TUv5z0

Ещё один доклад про карты

Folium: карты, маркеры, geojson, разные tiles, стили отрисовки. Можно сделать .save("...html")

MapboxGL: больше про кастомную отрисовку. df_to_geojson: географическую инфу отдельно, мету отдельно. Тысяча настроек, группировка по цветам, кластеризация, красота.

Kepler.gl - больше интерактивности, меньше программирования. Загружаешь данные, дальше gui с разными типами картинок поверх карты

Summary

Наверх к оглавлению

Observe all your applications

Описание: https://de.pycon.org/schedule/talks/observe-all-your-applications/

Видео: https://youtu.be/F6-nvgnlr9Y

Как настроить всё так, чтобы легко фиксить проблемы

Как сделать сервис прозрачным

Как писать сообщения в логах

Форматирование сообщений: информация для дебага, подсветка вывода

Как собирать логи с распределенной системы: стандартный подход

Ошибки: sentry.

Для метрик специальный демон, который комбинирует связанные события в единые метрики

Визуализация - графана, притом каждый делает дашборды под свои процессы

Рекомендует провязывать все действия пользователя (например) общим id. Полезно в том числе для профайлинга

Наверх к оглавлению

Where the heck is my memory?

Описание: https://de.pycon.org/schedule/talks/where-the-heck-is-my-memory/

Видео: https://youtu.be/C-1XWTgFo5g

Доклад про memory management

Заметили после апдейта утечку памяти

Общий вид процесса. Фикс - добавили схематизацию, проблема ушла. Почему?

Локализовали проблему - пустые датафреймы

Как выглядел код - исходные данные удалялись явно

Случайно заметили, что в разных окружениях работает с памятью по-разному. Перешли на cpu profiler

Заметили, что сериализация пустого датафрейма занимает кучу времени, wtf?

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

Заключение

Наверх к оглавлению

Lightning talks

Описание: список тем ниже

Видео: можно найти по названию здесь https://administraitor.video/edition/PyCon.DE/2018

Список докладов

Внезапный lightning talk про предсказание молний. По двум спутниковым снимкам предсказывает следующий, потом смотрит на разницу с реальностью и по этой разнице предсказывает молнии с accuracy 90%, что бы это ни значило

Наверх к оглавлению

Keynote: Emmanuelle Gouillart

Описание: https://de.pycon.org/blog/pyconde-and-pydata-karlsruhe-2018-keynote-emmanuelle-ouillart/

Видео: https://youtu.be/P5kQXwmAYSY

Keynote от Emmanuelle Gouillart, создательницы scikit-image

Есть ли будущее у классической обработки изображений в эпоху DL?

Примеры применения

Отметила регионы с разными текстурами (цветными кругами), затем препроцессинг scikit-image, классификация scikit-learn, получилась точная разметка текстур в изображении какого-то физического процесса

Статистика использования пакета

Работают с изображениями как numpy-массивами

Много внимания уделяют консистентности с sklearn, а также внутренней согласованности нейминга. Также стараются, чтобы для учёных, мало знакомых с программированием, порог входа был минимальным. Делают туториалы (см. scientific python lectures), документацию, подборки примеров

Много говорит про интерактивную документацию. Joblib для кеширования промежуточных данных в скриптах, также для параллелизации (ещё пробовали dash)

Наверх к оглавлению

Strongly typed datasets in a weakly typed world

Описание: https://de.pycon.org/schedule/talks/strongly-typed-datasets-in-a-weakly-typed-world/

Видео: https://youtu.be/wtpQTWROPc0

Доклад от той же фирмы, что вчера рассказывала про утечку памяти из-за пустых датафреймов

У всего свои системы типов. В целом похожие, но есть своя специфика (те же categories в пандас), плюс конвертации (numpy int64->float64 может привести к очень неожиданным результатам)

Наверх к оглавлению

Satellite data is for everyone: insights into modern remote sensing research with open data and Python

Описание: https://de.pycon.org/schedule/talks/satellite-data-is-for-everyone-insights-into-modern-remote-sensing-research-with-open-data-and-python/

Видео: https://youtu.be/tKRoMcBeWjQ

Доклад про спутниковые данные

Agenda

Два варианта, как учиться - с нуля или только определенную часть почти готовой сетки

Какие взяли модели (реализованные в керасе)

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

Наверх к оглавлению

Python Decorators: Gift or Poison?

Описание: https://de.pycon.org/schedule/talks/python-decorators-gift-or-poison/

Видео: https://youtu.be/VEexfP68LJs

Дополнительная обработка результатов / логгирование / профайлер / ... Пара примеров с кодом

Дальше будет пример какого-то полезного для тестирования декоратора

Пара слов про late binding

Замечательно, а зачем?

Если сохранять декорированную рекурсивную функцию в переменную, магии не получится

Наверх к оглавлению

Спринты и воркшоп PyLadies

Хочется как-то подвести итоги выходных, два дня спринтов и воркшопа пролетели очень быстро: в первый день я развлекалась с micropython, мигала лампочками и замеряла температуру сенсорами, а во второй - готовила доклад на PiterPy, которая будет через неделю.

Наверх к оглавлению