Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
931 links
ЛаМПовое с Бобровским
Download Telegram
На фоне этого всего акции Microsoft подскочили на 15%, а их облачный сервис Azure подрос на 59%, хоть они и стыдливо оправдываются, что дескать пандемия не при чём. Доход AWS за первый квартал составил 10 миллиардов долларов, рост 33%, и Амазон сейчас уже стал крупнее, чем Oracle.
Очень рекомендую изучить эти облачные конструкторы, проще всего начать с AWS (у гугла облака менее удобны и более аскетичны), такой стек сегодня обязательно знать, и за этими парадигмами всё будущее.
Понятный тренд про конкуренцию за искусственноинтеллектный захват мира: создавать в машинном обучении очень качественные и крупные модели, которые требуют огромных вычислительных ресурсов для их обучения, да и для сопровождения, и людских -- для подготовки датасетов и очень специфического, по сути уникального обучения моделек, каждое из которых превращается в большой научный проект. В результате ИТ-мэнстрим чётко отрезается от этого всего, и даже эксплуатация таких large-scale-AI-проектов становится им не под силу. Кушайте облачный сервис задорого, и всё.
Google, Facebook, Amazon, IBM, может ещё 2-3 компании, и всё. Ну и Microsoft конечно, вместе с OpenAI спроектировала суперкомп под extremely large artificial intelligence models:
https://blogs.microsoft.com/ai/openai-azure-supercomputer/
ZeRO-2 -- оптимизация памяти под такие проекты:
https://www.microsoft.com/en-us/research/blog/zero-2-deepspeed-shattering-barriers-of-deep-learning-speed-scale/

Nvidia жутко таким трендам довольна: продажи её графплат под AI-проекты за первый квартал подскочили аж на 39% (!) и преодолели "психологически важный порог" в три миллиарда долларов :)
Анонсировала в мае новый AI-чип A100 AI (пять петафлопс), формально завершила покупку Mellanox за $7 миллиардов, и обещает, что с её помощью обновлённая технология RTX для реалтаймового ray tracing уже скоро будет в ноутбуках (ищите бюджетную GeForce RTX 2050).
Смешное обсуждение тренда микросервисов.
https://news.ycombinator.com/item?id=22726328
В 2016-м Uber на хайпе двинул вот в это всё, засветился на конференциях, "Lessons learned at Uber on scaling to thousands of microservices" бла бла бла, однако в этом оказалось столько боли и страданий, что уже в этом году все микросервисы, похоже, снова заменятся на классику полувековой давности. Потому что каждый микросервис в итоге получился как маленький монолит, за которым, внезапно, тоже оказался нужен свой тщательный инженерный уход :)
В последние несколько лет технологии нейронных сетей переживают плавную революцию -- сперва не очень заметно, сегодня уже яснее, на смену CNN/RNN приходят так называемые трансформеры, уже сильно другие архитектуры, в которых всё же наверное главная фишка -- это идея "внимания", "интуиции", которое уделяется потенциально важным сущностям. И сегодня это топчик: OpenAI’s GPT, Microsoft’s Turing-NLG, Google’s BERT.

Тут тоже, как я раньше писал, продолжается гонка больших моделей, которые по качеству заметно обгоняют небольшие -- не линейно, а гораздо сильнее, причём особенно сильно эта разница растёт при применении трансформеров. Turing-NLG -- 17 миллиардов параметров, а GPT-3 вышедшая на днях -- 175 миллиардов параметров.

Microsoft уже уволила 27 журналистов, писавших заметки для её сайта,
заменив их AI
https://www.theguardian.com/technology/2020/may/30/microsoft-sacks-journalists-to-replace-them-with-robots

Полезные рекомендации от 150 экспертов, как правильно датасаентистам работать с ноутбуками:
https://www.microsoft.com/en-us/research/blog/old-tools-new-tricks-improving-the-computational-notebook-experience-for-data-scientists/
Zoom смасштабировался в апреле с 20 миллионов до 300 миллионов активных пользователей за одну ночь. Конечно, внутри был ряд крэшей, однако ребята достойно с этим справились, при том, что архитектуру под такой уровень они не планировали, стартап ведь развивался эволюционно, из прототипа. Как так делать:
https://blog.zoom.us/wordpress/2019/06/26/zoom-can-provide-increase-industry-leading-video-capacity/
Ключевые моменты их проекта: Distributed architecture; Multimedia routing; Multi-bitrate encoding; Application layer quality of service.
Forwarded from Alpha Centauri | Космос (Paul Potseluev)
На Reddit прошла Ask me anything-сессия разработчиков ПО из SpaceX. Один из наших читателей, SP, собрал интересные тезисы из их ответов пользователям. Возможно, чуть позже мы подготовим текст с более подробным разбором, а пока держите вот такие краткие итоги:

- Кодеры SpaceX подтвердили, что на мониторах в драконе крутится GUI на Chromium и Javacript. сначала они этот вариант сделали для презентации НАСА, а потом им самим понравилось
- Пока игр на Crew Dragon нет, но в будущем их скорее всего добавят
- Симулятор стыковки не имеет ничего общего с реальным софтом, его начали только как шуточный проект
- В "Драконах" не используются детали Tesla (дисплеи совершннно другие)
- "Старлинки" сейчас генерируют в районе 5 терабайт телеметрии сутки, миссия Dragon -- сотни гигабайт
- Софт Starlink сейчас обновляют примерно раз в неделю. Получается, что ПО на выведенных спутниках новее, чем на тех, что находятся в процессе запуска
- Спутники Starlink это скорее датацентр с серверами, чем космический аппарат
- Каждый запуск 60-ти Starlink'ов -- это вывод более 4000 компьютеров с линуксом. На данный момент в группировке на орбите более 30К компьютеров и 6К контроллеров
- Про алгоритмы посадки рассказывать не могут - секрет :)
- Много программистов пришли в SpaceX из геймдева, из-за похожей математики и умения решать проблемы с производительностью

- Используемые языки программирования:
-- основной С/С++, сторонние библиотеки используют по минимуму, предпочитая писать собственные для контроля качества кода, применяют в основном ООП, хотя любят также упрощать код;
вебстек для дисплеев - HTML / CSS / JS + веб-компоненты + собственный фреймворк;
-- python для тестирования и автоматизации
- на бортовых компьютерах RTLinux (linux ядро с патчем PREEMPT_RT, превращающим ее в ОС реального времени), на контроллерах голый код;
- GUI в ЦУПе основаны на LabVIEW
- Качество кода обеспечивается модульными тестами и интеграционными тестами в том числе и на летных образцах
- Управление Драконом создано исходя из принципа минимального взаимодействия с пилотом
- Спутники Старлинк настроены переходить в режим высокого аэродинамического сопротивления при долгом отсутствии связи с землей для быстрого схода с орбиты.
- В SpaceX есть мощный инструмент для сопоставления программы полета с симулятором. Можно полностью смоделировать миссию или любые сценарии сбоя даже на оборудовании, разложенном на столе.
- Наземное ПО для Старшипа основано на вебстеке и GUI Дракона, оно же будет использовано и в интерфейсах самого Старшипа.
- Возможно скоро поделятся скриншотами с дисплеев Дракона
- Система безопасности полета работает не на бортовом компьютере, а исключительно на контроллерах и сама взаимодействует с датчиками. Эта система отвечает за прекращение полета, к примеру когда ракета сходит с курса

Ну и ответ на самый важный вопрос: "Of course we play KSP :)"
Gwern Branwen (чтобы перечислить способности этого человека, нужен отдельный пост; особо стал известен, когда запилил GAN-сетки для генерации аниме-лиц и фигурок) в отношении недавно запущенной OpenAI GPT-3 (языковая модель со 175 миллиардом параметров, генерирующая тексты на уровне неплохих журналистов) заявил:

"GPT-3 реально пугает, потому что это ведь крошечная модель по сравнению с тем, что потенциально возможно, причём обученная самым глупым способом на единственной хилой модальности на крошечном датасете, но уже в первой версии проявляется сумасшедшее мета-обучение в рантайме, а кривые масштабирования всё еще не прогибаются!"

В США в июне начались слушания в Конгрессе по поводу Algorithmic Accountability Act ("Об алгоритмической подотчётности"), чиновники хотят по максимуму зарегулировать деятельность AI-организаций с позиций "непредвзятости результатов" (чтобы люди не подвергались дискриминации AI, которые принимают решения совершенно непонятно как). Какая-то погрешность в модели всё равно будет присутствовать, но конкретному человеку выяснить, что он попал в процент ошибки, невозможно. "Вам отказано в кредите" и всё. А если речь о здоровье, о медицинских диагнозах?

Поэтому параллельно конечно будут продолжать активно развиваться и формальные AI-технологии, где процесс решения прозрачен и понятен, и всегда можно вытащить подозрительное рассуждение. Microsoft например на днях выпустила новый язык программирования Bosque для AI-проектов, очень полезная и, надеюсь, перспективная вещь:
https://github.com/Microsoft/BosqueLanguage
Segment (одна из крупнейших customer data platform - сервисов с топовыми клиентами), рассказала, как решила понемногу отходить от монолитной архитектуры в 2013-м на микросервисы, но когда в 2017-м количество клиентов и нагрузка ощутимо возросли, микросервисы не смогли нормально смасштабироваться, всё поломалось, и решено было вернуться обратно к монолиту.
https://www.infoq.com/news/2020/04/microservices-back-again/
Как США борются с Китаем в научных исследованиях по искусственному интеллекту. Вкратце: китайцы стремительно захватывают всё :-)
https://www.nytimes.com/2020/06/09/technology/china-ai-research-education.html

Пока лидер США, но Европа уже сдаёт второе место Китаю, у них на троих где-то 70% всех научных исследований на ведущих конференциях.
Далее идут Канада, Англия, Израиль, Индия, Иран (по 3-5%), и в "Другие" -- оставшиеся 10% процентов, попал соответственно весь остальной мир, включая и Россию.

Похоже, что Монголия по AI скоро нас обгонит (если не уже): совместное исследование итальянских и монгольских учёных по созданию фреймворка визуального распознавания для дронов, слабенькое бортовое железо тянет одновременное отслеживание нескольких объектов на частоте видеопотока 20 кадров/с.
https://arxiv.org/abs/2004.06154
Парадокс с искусственным интеллектом в том, что это сегодня один из самых востребованных навыков в ИТ, однако AI-проекты очень сильно сдерживаются нехваткой специалистов, и получается замкнутый круг. Нету спецов -- AI-проекты развиваются медленно -- мало вакансий. А ведь точка входа в AI-профессию сама по себе весьма высокая, и вдобавок надо постоянно прикладывать много усилий, чтобы держаться на современном уровне. В AI/ML это особенно явно заметно. У кого есть время регулярно читать объёмные научные работы по AI или изучать новые фреймворки и платформы, выходящие каждый месяц?

Происходят всё время ведь очень крутые вещи, вот например как научили нейросеть играть в NetHack -- это такая олдскульная очень сложная roguelike, люди месяцами мучаются :)
https://ai.facebook.com/blog/nethack-learning-environment-to-advance-deep-reinforcement-learning/

Да и с чего вообще тут начать? Какие первые шаги делать? Классические когнитивные теории утверждают, что даже если хотя бы по 5-10 минут каждый день делать/изучать/развиваться в какой-то конкретной темке, в одном направлении, то через определённый период времени (месяцы, годы) вы станете в ней весьма и весьма опытным. Главное -- регулярность.

А начать движение в AI можно например с моего нового курса по SMT-солверам с нуля (автоматические решатели задачек и головоломок)
https://vk.com/wall-152484379_2878
Обращались за консультацией ребята с классической проблемой. Разрабатывается некоторая внутрикорпоративная система, и тут же эксплуатируется; на всё с десяток серверов, клиенты ноуты и десктопы. Сервера покупались в разное время, сконфигурированы по разному, и хорошо ещё, что везде линуха :) Но тоже самая разная, и легаси немало. Железо Intel, AMD, ещё что-то; про китайский Rockchip я, к огромному стыду своему, и не слышал доселе :) Сисадмин как-то это всё суппортит ручками.

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

На очевидный вопрос почему бы не заюзать VirtualBox/VMware они жалуются, что пробовали, и хоть и декларируется, что накладные расходы там 5-10%, на самом деле нет. Ну я сам много лет работал с virtualbox, и потенциальные траблы хорошо знакомы.

Следующая более реалистичная схема -- заюзать Docker, оверхед там действительно куда ниже. Я бы даже сказал, что скорость близка к нативной на bare metal. Кроме того, докер ведь вообще можно отвязывать от физической инфраструктуры, запущать в облаках, в Windows, да вообще на любом хосте.

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

И всё вроде бы прекрасно, но есть нюансы :)

продолжение следует
вторая часть про контейнеры

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

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

С контейнерами принципиальный момент, что он незыблем в своём исходном виде. Такая иммутабельность в крупной инфраструктуре хороша: нельзя что-то где-то случайно испортить, немного "подправив" вручную.

Да, и с контейнера можно сделать слепок, затем создать новый стартовый имадж на его основе, но это ещё сложнее и непрактичнее, нежели работа с виртуалками.

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

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

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

Если же у каждого кодера своя, довольно уникальная роль в проекте, и свой набор инструментов, который часто обновляется, то лучше выбрать виртуалки и немного проапгрейдить под них железо.
А я предупреждал! Вот уже автоматический code reviewer появился
https://aws.amazon.com/codeguru/
и те, кто пытается попасть "поскорее в профессию" через веб-фреймворки, а не через computer science, продолжат стремительно терять в своей и без того невысокой ценности.
Сегодня буквально уже ежемесячно такие AI-усиленные фичи для программистов выходят. А вот для тех, кто хорошо разбирается в cs, они наоборот будут дополнительным усилением.
Слабые слабеют, сильные сильнеют :)
9 карьерных ловушек

по материалам
https://www.infoworld.com/article/3270728/9-career-pitfalls-every-software-developer-should-avoid.html

1. Надолго застревать в одной технологии

В конце 1990-х, когда начался хайп вокруг проблемы 2000-го года и спешно переписывались и правились миллиарды строк, программисты на Коболе получали 300 долларов в час. И хотя и сегодня под некоторые кобол-проекты набирают 70-летних старцев, в целом найти работу по легаси-технологии (как минимум, под боком, без релокации) нереально.

Или, например, в начале 21-го века, когда расцвели завышенные ожидания в отношении Java на фоне бума дот-комов, такие же суммы, сотни долларов в час, платили программистам-консультантам на Java. Сегодня же крупные компании набирают их на галеры оптом по дешёвке.

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

2. Ставить всё на одну технологию

Входить в модную горячую тему тоже надо с умом -- по схеме хеджирования ставок (снижаем риск потери от провала ставки через параллельную ставку на противоположный или другой исход). Вроде бы, стремиться поскорее стать экспертом в доминирующей теме здорово -- но и конкуренция в стремительно взлетающих нишах тоже высочайшая. Поэтому продумайте план выхода.
Отслеживайте набирающие популярность технологии и языки программирования, схожие и ближайшие к используемым вами, и изучайте их в объёме, достаточном для создания проекта на тысячу строк (20% изученного дадут 80% результата). В таком случае вы сможете при необходимости очень быстро переключиться в подходящую сферу, и кроме того, здорово расширите свое видение программирования в целом.

продолжение следует
9 карьерных ловушек

3. Оставаться влюблённым в странные вещи

Ruby, Groovy, Erlang -- по своему мощные и прекрасные языки, однако их магия давно исчезла. Вы не получите надбавки к зарплате за знание этих языков. Если ваш начальник разрешит вам программировать в проекте на этих языках, то это потому, что либо ему всё равно, либо то, что вы делаете, не очень важно в целом, а он просто хочет вас поддержать, либо он не в курсе, что таких экзотических программистов находить всё сложнее и сложнее.

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

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

4. Игнорировать политические игры в компании

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

продолжение следует
9 карьерных ловушек

5. Демонстрировать незаинтересованность в бизнесе компании

Я просто программист, я не интересуюсь бизнес-задачами.

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

6. Иметь "профсоюзную" ментальность

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

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

продолжение следует
9 карьерных ловушек

7. Не заботиться о своей ценности

Это вообще пожалуй самый ужасающий баг в карьере :)

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

Знай свою ценность, и стабильно наращивай её.

8. Думать, что дело только в деньгах

Чем выше у человека квалификация, тем меньше он готов работать с другими людьми только за деньги. Работа -- это существенная вещь в жизни, в которую можно вложить все свои силы и получить хороший результат. Я хочу работать только с теми, кто увлечён своей работой. А что насчет тебя?

С другой стороны -- не будь занудой. Если ты на работе всерьёз паришься, что лучше -- пробелы или табы, лучше попринимай таблеточки.

9. Относиться к своей работе просто как к работе

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

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

При том, что ты ведь мог потратить кучу времени на работе не впустую, а для повышения своего профессионального уровня, чтобы например точно сохранить за собой эту должность. В конце концов, можно было просто регулярно изучать то, что пользуется спросом на рынке труда, и усиливать свою квалификацию, а не метаться в последний момент и лихорадочно скачивать "типовые вопросы на интервью".
repl.it запускает code jam с 10 по 31 августа: надо разработать свой язык программирования, и кто запилит действительно стоящий проект, получит приз 10,000 долларов.
Хотелось бы верить, что выиграет проект в духе вот такого например
https://github.com/cedille/cedille
но это вряд ли.
Подробнее и туториалы по теме:
https://blog.repl.it/langjam
После относительного спада количество айтишных вакансий медленно но уверенно начало восстанавливаться, сообщила некоммерческая ассоциация CompTIA. По данным на конец июня, количество вакансий в США достигло 263 тысяч. На программистов спрос почти 83 тысячи предложений. В феврале-марте вакансий было 350 тысяч, в мае их количество провалилось до 200 тысяч.
В целом всё позитивно: стабильно растут сектора разработки, ИТ-суппорта, облачных инфраструктур и информационной безопасности.
https://www.comptia.org/newsroom/press-releases/2020/07/02/tech-job-gains-confirm-pockets-of-strength-in-recovering-labor-market

Интересно, кто больше всех хантит: айтишники Amazon и IBM, финтех Wells Fargo, медики Anthem Blue Cross, производитель бытовых инструментов (внезапно) Stanley Black & Decker, и военные Northrop Grumman и Boeing.