Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
931 links
ЛаМПовое с Бобровским
Download Telegram
По данным Торговой ассоциации IT-индустрии CША CompTIA, в апреле сократили 112 тысяч айтишников, и пока это крупнейший спад в истории IT, хотя в сравнении с другими отраслями он куда меньше. К тому же в последние недели он замещается увольнением низкоквалифицированного персонала и менеджеров :)
https://www.comptia.org/newsroom/press-releases/2020/05/08/us-tech-sector-employment-down-in-april-even-as-employers-look-to-fill-technical-jobs-comptia-analysis-finds

CompTIA полагает, что компании откажутся скорее от маркетинга и много чего другого, чтобы сохранить инженерные мозги организации, так как единственное, что точно можно сказать о смутном будущем ближайших десятилетий "COVID-19 economy" -- что онлайн будет захватывать вообще всё. А эксперты Forrester предупреждают, что хоть и медленно, но теперь уже точно неотвратимо, всё больше и больше привычных видов деятельности, хоть немного связанных с физической деятельностью, будут заменяться роботами и иной автономной автоматизацией.
https://www.informationweek.com/strategic-cio/team-building-and-staffing/how-to-prep-your-career-for-the-ai-job-apocalypse/a/d-id/1335231
Классный "Интерактивный курс Python для новичков в программировании" (нереклама:)
https://letpy.com

Подробнее о нём:
https://proglib.io/p/interaktivnyy-kurs-python-dlya-novichkov-v-programmirovanii-2020-05-19

Можно графические задачки делать, есть учебный отладчик и даже бот, который пытается как-то неформально подсказывать по ошибкам, молодцы ребята.
290 миллионов студентов сегодня остались без оффлайнового обучения, и оказалось, что 70% преподавателей к ведению онлайн-обучения совсем не готовы. Однако поколение Z (первое цифровое поколение) не парится: только 26% считает, что отсутствие высшего образования может стать препятствием в карьере, и 90% нанимателей готовы брать на технические должности ребят без диплома -- реальные навыки и желание учиться сегодня имеют явно большее значение, нежели наличие четырёхгодичных корочек.
https://workplacetrends.com/closing-the-skills-gap-study/
Однако растёт ценность всевозможных сертификатов онлайн-курсов (причём любых, даже совсем небольших) и цифровых cv (для программистов это прежде всего гитхаб).
62% Z-ребят готовы оставить университет ради хорошей работы, начинают трудиться они заметно раньше, нежели их родители, однако предпочитают, чтобы на работе было организовано обучение. 84% уверены, что их карьера будет сильно отличаться от старомодной модели родителей, и долгосрочная работа в одной компании быстро становится атавизмом.
Работа и жизнь сегодня смешиваются, сливаются, поэтому Z справедливо ценят удобные рабочие места и комфорт, но не в классическом смысле, а с акцентом на том, что на работе по сути происходит их жизнь, поэтому частые перерывы и отвлечения на соцсети совершенно нормальны.
Нейросетка GameGAN сгенерировала полноценный пакман, просто наблюдая за оригинальной игрой, не зная ни правил, ничего другого про саму игру. Основные идеи сохранены, и мелкие фишечки добавились, в плане бонусов и охоты.
https://blogs.nvidia.com/blog/2020/05/22/gamegan-research-pacman-anniversary/
NVIDIA обещает с помощью геймгана автоматически генерировать качественные уровни для самых разных игр, а также выпускать модификации игр, улучшенные нейросеткой, уже в этом году на своей платформе AI Playground.
53% поколения Z интересует частичная занятость, нежели фуллтайм, и 46% Z уже в различной форме участвуют в так называемой gig-экономике. Этот подход даже ближе к фрилансу, который отличается от фуллтайма прежде всего наличием нескольких источников дохода, когда человек участвует сразу в нескольких проектах разных компаний. И в целом, gig-схемы становятся всё более доступными и прибыльными, поэтому нестандартные пока карьерные пути станут скоро обычным делом.

При этом поколение Z находится в состоянии сильного беспокойства и стресса, и оно также -- самое одинокое на сегодня. Более половины представителей Z заявляют, что чувствуют 10 из 11 эмоций, связанных с одиночеством.
https://www.multivu.com/players/English/8294451-cigna-us-loneliness-survey/docs/IndexReport_1524069371598-173525450.pdf

Наиболее распространенные -- это ощущение, что окружающие их люди на самом деле где-то далеко (69%), застенчивость (69%), и ощущение, что никто по-настоящему их не понимает (68%). Но это всё с возрастом быстро проходит, и становясь чуть-чуть постарше, Z-ребята расцветают, преисполняются уверенности и эмпатии, и активно симпатизируют эмоционально умными лидерам.

Самое классное, наверное, что Z росли в виртуальном режиме реального времени, играя с самыми разными незнакомыми людьми со всего мира, и сейчас они точно также, вместе со всем своим поколением, переживают глобальный кризис. Количество Z, которые идентифицируют себя прежде всего как граждан мира, нежели граждан конкретной страны, составляет уже 42 процента,
https://www.spotifyforbrands.com/en-US/culturenext/
И этот процент будет расти и дальше, так как общие трудности теснее связывают вместе ребят по всему миру.
На фоне этого всего акции 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. Игнорировать политические игры в компании

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

продолжение следует