Даже у роботов хаос в голове: учёные создали ИИ со “спонтанным” поведением

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

image

«По сути, наша работа посвящена тому, как спроектировать спонтанное переключение поведения, используя хаотическую динамику», — говорит соавтор Кохей Накадзима, прикладной математик из Токийского университета в Японии. Обычно инженеры разрабатывают робота, который будет ходить и бегать, и экспериментатор в таком случае мог бы использовать внешний портативный контроллер для переключения этих “поведений”. Но чтобы совершить скачок от такой контролируемой обстановки к той, в которой робот может автономно переключать поведение, исследователи стремились имитировать хаотическое передвижение. Часто наблюдаемый в мозгу животных и других динамических системах хаотическая маршрутизация возникает, когда система непредсказуемо, но детерминированно переключается между несколькими стереотипными паттернами, будь то ходьба, бег или любые другие формы поведения.

Опыт прошлого

Робототехники и раньше стремились имитировать хаотическое передвижение, отмечает ведущий автор исследования Кацума Иноуэ, аспирант Токийского университета. Один робот, созданный в 2006 году, моделировал младенца человека с соматосенсорной системой и сотнями двигателей, представляющих мышцы тела, каждый из которых был подключен к нескольким хаотическим осцилляторам — грубому эквиваленту двигательных нейронов. Соматосенсорные системы взаимодействуют с хаотическими осцилляторами, которые затем сигнализируют «мускулам» о движении. Разработанная для имитации раннего развития моторики человека, система воспроизводила движения, похожие на хаотические передвижения, путем чередования нескольких стереотипных форм поведения, включая ползание и переворачивание.

image
Синие, оранжевые и зеленые фигуры на этом изображении представляют различные варианты поведения, которые авторы разработали для своего мозга-робота, чтобы переключаться между ними автономно. Для этого исследователи создали особенности феномена, называемого хаотическим перемещением. Изображение из доклада “Designing spontaneous behavioral switching via chaotic itinerancy” (Кацума Иноуэ, Кохей Накадзима и Ясуо Куниёси).

Другие исследования были направлены ​​на разработку спонтанного переключения поведения в роботах с использованием иерархической структуры с нейронной сетью более высокого уровня, управляющей модулями более низкого уровня, которые соответствуют каждому типу поведения. Однако, по мнению Кохей Накадзима, в этих экспериментах довольно много времени занимает процесс обучения.

Чем система уникальна?

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


(A) Схематическая диаграмма многомерной хаотической системы, подготовленной в наших экспериментах. Систему можно разделить на две части: сеть состояний входного эхо-сигнала (ESN) и хаотическая ESN. Входной ESN действует как интерфейс между дискретным входом и хаотическим ESN, генерируя динамику переходных процессов, проецируемую на хаотический ESN при переключении символьного входа. Чтобы предотвратить превращение хаотического ESN в нехаотический из-за бифуркации, соединение между входным ESN и хаотическим ESN обучается так, чтобы выходная динамика переходных процессов сходилась к 0. (B) Две экспериментальные схемы. В схеме с обратной связью символический ввод предоставляется извне. С другой стороны, в замкнутом цикле символьный ввод автономно генерируется дополнительным контуром обратной связи. В данном методе меняются элементы, представленные красными стрелками, чтобы внедрить желаемую динамику CI. Схематические диаграммы методов обучения, состоящие из трехэтапной процедуры. На шаге 1 параметры сети и считыватель обучаются выводить квазиаттракторы и динамику вывода, соответствующую символам. На шагах 2 и 3 символьная последовательность создается автономно. Учёные подготовили периодические шаблоны перехода символов в качестве цели на шаге 2 и правила стохастического перехода символов на шаге 3.

Что будет дальше?

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

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

Список литературы:

  1. Adam Smith. AI with “spontaneous” behaviour like animals developed [Электронный ресурс]. URL: www.independent.co.uk/life-style/gadgets-and-tech/scientists-ai-spontaneous-behaviour-animals-b1762407.html
  2. Amy MacDermott. New technique builds animal brain–like spontaneity into AI [Электронный ресурс]. URL: blog.pnas.org/2020/11/new-technique-builds-animal-brain-like-spontaneity-into-ai
  3. Официальный доклад: Katsuma Inoue, Kohei Nakajima, Yasuo Kuniyoshi. Designing spontaneous behavioral switching via chaotic itinerancy [Электронный ресурс]. URL: advances.sciencemag.org/content/advances/6/46/eabb3989.full.pdf

ссылка на оригинал статьи https://habr.com/ru/post/530654/

Сынок, запрыгивай в вагон, я закину чемоданы! Экспресс-вход в индустрию, когда почти прошел мимо

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

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

В предыдущей серии упоминалась такая бодрая цель:

Начинать все сначала решил с планом в голове и достойной целью перед глазами. Рассудил очень просто: хочу собственный дом подальше от города, и чтобы не к старости. То есть, за ближайшие 5 лет надо бы им обзавестись без ипотеки.

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


… если вы понимаете о чем я

Пара слов обо мне, если интересно

Сейчас я вполне состоявшийся 35-летний middle Android-разработчик в крупном и вполне хипстерском финтехе. За плечами около 3 лет профильного опыта, работа в 4 компаниях и печальный скепсис к скрамам и аджайлам. И так вышло, что уже через пару лет я проводил технические собеседования, где лишний раз убедился в правильности выводов об устройстве индустрии.

Онлайн-курсы действительно работают, но есть нюанс

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

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

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

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

Нет никакого смысла знать побольше аббревиатур из вакансий

Всегда найдется десяток (если не сотня) конкурирующих джунов (Junior developer), полиставших на 20 мануалов больше вас, и добавивших еще десяток фреймворков просто для массовки. Потому что про них скорее всего не спросят, а резюме так выглядит "жирнее".

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

Поэтому лучше потратить время на прокачку навыка самопрезентации и полировку работы с базовыми SDK выбранной платформы (в моем случае это был Android SDK). Из двух джунов выберут не того, кто лучше помнит "алгоритмы и структуры данных", а того, кто больше запомнился и произвел лучшее личное впечатление.

Одно из моих первых "пристрелочных" собеседований было сущим позором — я вдруг забыл половину собственного проекта (игра по типу "2048"); начал путать хоткеи IDEA, когда меня попросили исправить тестовый код. Но обиднее всего было ответить лишь на 2 технических вопроса из 10, да и то "жиденько". Это было больно, позорно, но очень наглядно. И чтобы совсем вас добить, скажу что это сразу был собес в компанию с буквой "Я".

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

Джунов не должны нанимать слишком легко

Ажиотаж на профессию привел к тому, что джунов на рынке можно грузить лопатой и нанимать килограммами. Соответственно, конкуренция во все более-менее нормальные компании просто огромна. Помножьте это на отсутствие работы в регионах и популяризацию удаленки. Любой, кто предлагает вам оффер после первого же собеса и без дополнительных проверок/условий скорее всего планирует закрыть джуном какую-то дыру. В лучшем случае, получите часть обещанной ЗП; в худшем — будете работать на домашнем ноутбуке, а вместо зарплаты получать "бесценный опыт".

На моей первой работе программистом одним из условий оффера было совмещений обязанностей копирайтера со знанием английского. Это была та самая "страховка", которую работодатель приобрел для минимизации потерь если бы проку из меня не вышло. Однако, никаких текстов от меня ни разу за год работы не потребовали. Видимо, всех все устроило.

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

Частые смены работы — это хорошо

Несмотря на популярную в HR-кругах теорию о том, что меняющий работу чаще чем раз в N лет ненадежен и нежелателен, в ИТ индустрии это норма. Более того, средняя продолжительность работы разработчика в организации — около 2 лет. Значит, что кто-то работает 4 года, а кто-то — 6 месяцев. Пруфы привести не могу — это комментарии знакомых HR-специалистов, подтверждающие собственные наблюдения.
У меня трудовая книжка уже с двумя вкладышами, так что будем считать такую позицию моей личной "деформацией". Однако, периодическая смена мест работы даст вам следующие преимущества в период прокачки себя как специалиста:

  • Смена контекста применяемых технологий и методик разработки. Работая 5 лет на одном предприятии, вы никогда не составите свое мнение о том, как лучше работать над задачами, какие паттерны не работают, и где та граница, за которой абстракции в коде превращаются в бессмысленный оверинжиниринг.
  • Работа в одном и том же коллективе не позволит составить собственное мнение о том, какие условия для вас действительно комфортны. Поработав в стартапе из 14 человек, и в огромном банке, я понял что больше не готов сидеть в опен-спейсе на 30 человек со всей России. Слишком разное у людей представление о приемлемом поведении в подобных условиях.
  • Может оказаться, что при всей крутости проекта вас будут каждый день раздражать отсутствие чайника и ресепшена. То есть, всякие простые вопросы вроде "нужна тетрадь" или "нужно отдать ноутбук в ремонт" будут порождать целый квест с вами в главной роли. В то же время, отсутствие кофе-машины легко нивелируется покупкой маленькой ручной Wacaco (не сочтите за рекламу, но уж очень полюбилась эта малышка).

Помню, как впервые увидел код на RxJava. Те жалкие несколько дней тыканий в Rx скудными обрывками императивного подхода до сих пор вспоминаю с улыбкой: цепочка на 20 строк, и в каждой по преобразующему оператору… еще и с созданием внешних зависимостей. Надо сказать, что Rx на первом проекте был ну очень заковыристый и всеобъемлющий — позже я ничего более мудреного не встречал. Но именно тогда родились теплые чувства к этому фреймворку, которые не отпускают до сих пор. Однако, если бы я продолжал жить тем первым проектом, то еще не скоро узнал бы что это был сложный, заковыристый, но все же сборник примеров как делать не надо.

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

  • Если чувствуйте, что прогресс на работе остановился или серьезно замедлился — попробуйте влезть в новый проект. Если нельзя — смело меняйте работу.
  • Отработали пол года и видите что за вами не нужно все переделывать, а руководство устраивает ваша работа — заводите разговор о пересмотре ЗП. Реальная инфляция на порядки выше 3%, а спрос на более-менее вменяемых разработчиков не снижается.
  • Если новая работа вообще не дает прокачки навыка, и вместо этого вы занимаетесь какой-то ерундой — меняйте работу. Это не та специальность, где запись в трудовой ценна сама по себе.

Большинство собеседований одинаковые, а ваше резюме или код никто особо не смотрит

По моим наблюдениям, 8 из 10 собеседующих получили ваше резюме за 10 мин до встречи. И да, им тоже лень всем этим заниматься, поэтому вас встретят списком найденных в сети вопросов по Java\Android\подставь_что_актуально. А значит, эти списки вы можете нагуглить самостоятельно и обстоятельно их разобрать. Это прибавит уверенности на встрече и поможет лучше сыграть свою партию.

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

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

ссылка на оригинал статьи https://habr.com/ru/post/530658/

Регламенты закупок: кто виноват, что делать… KPI. Базис Гребнера

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

Можно поменять правила, но тут начинаются неприятности. Имеется доказательство того, что часто совсем простые правила ведут к непредсказуемой динамике. Это называется принцип вычислительной неприводимости (The New Kind of Science). Результат применения не очень сложного набора правил нельзя интуитивно предугадать. Его можно только вычислить (смоделировать), произведя соответствующие операции.

Обсудим следующие темы:
— динамика закупок производственных предприятий;
— что не так в регламентах;
— почему система все-таки работает;
— исследование KPI через базисы Гребнера.

Инстаграм

1. Анализ данных по закупкам.

Ниже приведены данные закупок 5 действующих предприятий и одного строящегося.
Данные взяты из ERP. Они очень простые:
— дата создания заявки о потребности;
— дата утверждения потребности после проведения процедур согласования;
— дата начала поставок.

Действующий завод 1.

Первый график соответствует координатам <дата создания потребности — дата утверждения закупки>. Второй график соответствует координатам <дата утверждения закупки — дата начала поставки>. Третий — общая картина без даты утверждения в координатах <дата создания потребности — дата начала поставки>.

Действующий завод 2.

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

Действующий завод 3.

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

Действующий завод 4.

Действующий завод 5.

При всей серьезности регламентов интересны даты в отрицательных областях. Это значит, что поставка происходит до окончания процедур согласования. Еще это заметка к вопросу об относительной пользе ERP: без нее плохо, но при ее наличии очень много проблем (относящихся к сфере ее ответственности) остается нерешенными.

Строящийся завод.

Данные выглядят более хаотичными, но отрицательные даты присутствуют в большом количестве.

2. Что на практике допускают регламенты.

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

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

Первый раздел касался только фактических сроков зафиксированных в ERP для процессов закупок. Но эти закупки производятся из выделенных сумм, определенных регламентами планирования, которые одинаковы для всех предприятий.

Ниже приведены рисунки, определяющие объемы средств на материалы. Они соответствуют действующим заводам, данные о которых были рассмотрены ранее.

Синим обозначен первоначально утвержденный план.

Коричневая линия — уточненный план. Данные исторические, разрывы соответствуют пересмотру параметров бюджета.

Зеленая линия — факт.

Фиолетовая линия — уточненный план без факта: показывает насколько изначально завышаются потребности.

Интересно, что вся эта динамика соответствует действующим регламентам.

По таким позициям, как Ресурсы и Услуги, план в точности соответствует факту (о чудо методов прогнозирования).

3. Система правил, KPI и теневое планирование.

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

Это не парадокс, а следствие теневого планирования и правильной работы с KPI (сами выбираем — сами отчитываемся).

Никто не смотрит на отрицательные даты в сроках поставки (задним числом) и странную динамику потребностей. Основное внимание направлено на способность не превысить бюджет.

Посмотрим, что при этом происходит с ценами закупок.
Практически для всех предприятий картина одинакова. Далее приведены данные только одного из предприятий.

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

Все покупки услуг вне плановые.

Больший объем ресурсов куплен вне плана.

На гистограммах слева указано распределение количества позиций, а справа — их объем.

Конечно, на предприятие, работающем десятилетия, все ремонтные услуги должны быть внеплановыми.

Сводка для ресурсов для ремонтной деятельности.

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

Если такое планирование может иметь место в стесненных обстоятельствах, то целенаправленное развитие системы планирования несомненно будет еще более успешным.

4. Что делать? KPI. Базисы Гребнера.

Как бы не были обоснованы претензии к KPI, но они прочно вошли в систему управления бизнесом.

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

В целом, резервов в управлении через KPI сравнительно немного. Но анализ действующей системы KPI многое может сказать об опасениях участников бонусных программ. Те позиции, которые не включаются в KPI, являются наиболее интересными. Для включенных позиций (например, объем продаж), которые сложно интерпретировать однозначно и сложно достигнуть, любопытными являются дополнительные легко достижимые «компенсирующие» позиции.

Предлагается следующая методика объективной оценки действующих KPI.
Все количественные и качественные KPI переводятся (по достаточно простым и прозрачным правилам) в функциональные зависимости:
f1(x1,x2,x3,x4)
f2(x2,y1,y2,y5)
f3(x4,y2,z1,z2,z3)…, где x, y, z — учитываемые факторы.
Таких зависимостей может быть много. Столько же, сколько KPI или больше.
Формально, в результате получается полиномиальная система от многих переменных.

Для решения таких систем разработан метод базисов Гребнера. В общем случае метод достаточно сложный и не всегда ведет к желаемому результату.

Но в случае KPI он подходит идеально.
Что он позволяет делать?

Во-первых, метод дает ответ, совместима ли система и есть ли у нее решение. Если у системы нет решения, значит выбранные KPI противоречивы.

Во-вторых, для непротиворечивых KPI метод позволяет найти функциональные зависимости (формулы) между KPI разных подразделений и проанализировать их взаимозависимость.

В-третьих, можно понять уровень сепаратизма и несвязанности показателей работы подразделений. Система KPI может распасться (по формулам) на несвязанные между собой (независимые) части.

И, наконец, формализованный перечень факторов x, y, z,… фиксирует набор учитываемых проекций бизнеса. Все остальные проекции оказываются забытыми.

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

ссылка на оригинал статьи https://habr.com/ru/post/530668/

Новые ограничения в использовании Docker Hub и как GitLab реагировал на их ввод

Ни для кого уже не новость, что начиная с 2 ноября 2020 года Docker Hub ввел ограничения на скачивание образов: для анонимных пользователей он будет равен одной сотне за шесть часов, а для авторизованных пользователей будет зависеть от уровня подписки.

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

Что же произошло?

Публичный регистр контейнеров Docker Hub очень широко и часто используется сообществом DevOps для достижения разнообразных целей: запуска CI/CD задач, стандартизации процессов, выката контейнерных приложений как в sandbox, так и в production. Как только мы узнали о введении новых ограничения по количеству запросов, мы начали анализ новых правил, чтобы понять, как они повлияют на работу наших пользователей, и как мы можем почем решить возможные проблемы.

Согласно новым правилам после 100 запросов за 6 часов с одного клиентского IP адреса каждый новый docker pull вернет ошибку 429 - too many requests, что несомненно приведет к сломанным CI/CD конвейерам, невозможности выкатить приложения и целому букету ошибок в ваших Kubernetes кластерах. Вполне понятно, что этот лимит может быть очень быстро достигнут, особенно если все задачи выполняются с одного и того же GitLab Runner агента, или если команда из нескольких инженеров работает с одного и того же публичного адреса.

Аутсорсинг Dependency Proxy

Как отметил мой коллега Tim Rizzi «Нам следует срочно всем рассказать о Dependency Proxy«, который изначально создавался для проксирования и кэширования образов Docker Hub. Этот функционал существует в GitLab уже довольнейший давно (начиная с версии 11.11), но до сегодняшнего дня был доступен только для пользователей Enterprise подписки уровня Premium. Перед продуктовой командой встал вполне резонный вопрос: «Стоит ли нам вынести Dependency Proxy в open source версию продукта, помогая таким образом широкому сообществу пользователей минимизировать проблемы из-за новых ограничений Docker Hub?«

Не вдаваясь в подробности, ответ на этот вопрос был ДА. При принятии решения, в какой уровень подписки должен попадать тот или иной функционал продуктовая команда GitLab всегда руководствуется вопросом «Кто является целевым пользователем?«. Согласно этому принципу те возможности, которые чаще всего запрашивает индивидуальный участник или разработчик, попадают в Core или Open Source версию продукта. Скачивание образов с Docker Hub вполне соответсвует этому описанию. Более того аутсорсинг Dependency Proxy поможет большому количеству разработчиков повысить надежность и производительность их CI/CD конвейеров.

Как результат, начиная с версии 13.6 вышедшей 22 ноября 2020 года, проксирование и кэширование образов в GitLab стало абсолютно бесплатным для всех наших пользователей!

Что дальше?

К сожалению, идеальные решения не появляются мгновенно. Мы как никто другой знаем, что нашему продукты есть куда расти, поэтому активно работаем над улучшением функционала Dependency Proxy и уже в ближайших релизах планируем добавить новые возможности / решить имеющиеся проблемы:

  • 13.7 (22 декабря, 2020)

    • gitlab-#11582 сделает возможным использование Dependency Proxy для приватных групп в GitLab (сегодня работает только для публичных проектов)

    • gitlab-#241639 позволит использовать закэшированный образ даже если Docker Hub недоступен. На сегодня это невозможно, так как даже при наличии закэшированного образа, его манифест всегда скачивается из конечного регистра

    • gitlab-#21619 добавит новый параметр pull_policy в YAML описании CI/CD задач, позволяющий разработчикам самим указывать политику скачивания контейнера (always, if-not-present, never) вместо того, чтобы полагаться на настройки GitLab Runner

    • gitlab-runner-#26558 позволит конфигурировать GitLab Runner с набором политик для скачивания образов (always, if-not-present)

Мониторинг ограничений

Решения обозначенные выше, а также в блог посте моего коллеги Steve Azzopardi, помогут упростить работу с новыми ограничениями, но не избавят от них на все 100%. Поэтому мы также выработали набор советов и инструментов, цель которых — помочь широкому сообществу адаптироваться к новым лимитам за счет их мониторинга.

Как проверить текущее значение лимита?

Документация Docker рекомендует использовать HTTP запрос для проверки текущего значения ограничений запросов в Docker Hub.

Начнем с определения образа, для которого мы хотим получить текущее ограничение и получения токена для авторизации:

$ IMAGE="ratelimitpreview/test" $ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$IMAGE:pull" | jq -r .token)  $ echo $TOKEN

Следующий шаг — симуляция запроса docker pull. Вместо использования метода GET отправляем HEAD запрос (он не учитывается при подсчете ограничений). Ответ на этот запрос содержит параметры RateLimit-Limit и RateLimit-Remaining.

$ curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/$IMAGE/manifests/latest

В примере ниже количество запросов ограничено 2500, из которых 2495 еще доступны. 21600 определяет шестичасовой период (в секундах)

RateLimit-Limit: 2500;w=21600 RateLimit-Remaining: 2495;w=21600

Автоматизация проверки лимитов

Michael Friedrich, один из евангелистов GitLab, поделился готовым решением на Python для проверки ограничений. Проект включает подробную документацию по установке и использованию

$ python check_docker_hub_limit.py --help  usage: check_docker_hub_limit.py [-h] [-w WARNING] [-c CRITICAL] [-v] [-t TIMEOUT]  Version: 2.0.0  optional arguments:   -h, --help            show this help message and exit   -w WARNING, --warning WARNING                         warning threshold for remaining   -c CRITICAL, --critical CRITICAL                         critical threshold for remaining   -v, --verbose         increase output verbosity   -t TIMEOUT, --timeout TIMEOUT                         Timeout in seconds (default 10s)

Скрипт возвращает следующие exit коды в зависимости от указанных параметров

  • 0— OK

  • 1— WARNING

  • 2— CRITICAL

$ python3 check_docker_hub_limit.py OK - Docker Hub: Limit is 5000 remaining 4997|'limit'=5000 'remaining'=4997  $ echo $? 0  $ python3 check_docker_hub_limit.py -w 10000 -c 3000 WARNING - Docker Hub: Limit is 5000 remaining 4999|'limit'=5000 'remaining'=4999  $ echo $? 1  $ python3 check_docker_hub_limit.py -w 10000 -c 5000 CRITICAL - Docker Hub: Limit is 5000 remaining 4998|'limit'=5000 'remaining'=4998  $ echo $? 2

Экспортер Prometheus

Кроме этого мы подготовили и выпустили экспортер для Prometheus, который позволит экспортировать метрики ограничений и реализовать их полноценный мониторинг.

Репозиторий проекта включает демо контейнер, включающий себе экспортер, Prometheus, Grafana, и docker-compose инструкции для его выката

$ cd example/docker-compose  $ docker-compose up -d

Перейдите по адресу http://localhost:3000 для доступа к дэшборду Grafana

Надеюсь, наш опыт и рекомендации окажутся для вас полезными!

ссылка на оригинал статьи https://habr.com/ru/company/gitlab/blog/530666/

Ядерная война, скорее всего, не приведёт к вымиранию человечества

Многие люди заявляли, что полномасштабная ядерная война, скорее всего, приведёт к вымиранию человечества. Я всесторонне изучил этот вопрос и пришёл к заключению, что даже полномасштабный обмен ядерными ударами с очень небольшой вероятностью (менее 1%) приведёт к вымиранию всего человечества.

Под полномасштабной войной я понимаю обмен ядерными ударами между крупнейшими мировыми державами – США, Россией и Китаем – каждая из которых потратит весь свой арсенал. Общее количество боеголовок сегодня (14 000) значительно меньше, чем на пике Холодной войны (70 000). И хотя сегодня вымирание маловероятно, эта вероятность может измениться, если будет введено в строй значительное количество новых боеголовок, или кардинально изменится дизайн оружия.

Три потенциальных механизма вымирания людей после ядерной войны, это:

  1. Кинетическое уничтожение.
  2. Радиация.
  3. Изменение климата.

С существующими вооружениями правдоподобным будет только третий пункт, но давайте рассмотрим каждый из них.

1. Кинетическое уничтожение

Не существует достаточного количества ядерных боеголовок для того, чтобы уничтожить всех людей кинетическим воздействием, и вряд ли когда-либо будет существовать. В мире есть 14 000 единиц ядерного оружия. Допустим, в среднем их мощность составит 1 мегатонну. И это консервативная прикидка – в реальности среднее будет ближе к 100 килотоннам. Мегатонная боеголовка может создать огненный шар, покрывающий 3 кв.км., и ударную волну средней силы, сносящей частные дома на площади в 155 кв.км. Шар убивает почти всех, а волна – довольно большой процент людей, но не 100%. Примем консервативную оценку, и скажем, что ударная волна тоже убивает всех. 14 000 * 155 = 2,17 млн кв.км. Площадь Нью-Йоркской агломерации составляет 8 683 кв.км. Получается, что всё ядерное оружие мира может уничтожить 250 таких агломераций. Это много! Но недостаточно, даже если бы кто-нибудь попытался уничтожить всех людей сразу. Общая площадь поверхности земли – 510,1 млн кв.км. Площадь городов составляет 2%, или порядка 10,2 млн кв.км. Общая площадь уничтожения ядерным оружием составляет 2,17 млн кв.км., что значительно меньше минимальной оценки площади обитания человека, 10,2 млн кв.км. Следовательно, кинетические разрушения не смогут уничтожить человечество.


Внутри белой окружности находится зона умеренного воздействия ударной волны (34 кПа): 7,03 км (155 кв.км.) от мегатонной боеголовки. См. сайт nukemap

Если хотите проверить мои выкладки, я использовал сайт Nuke map.

Ещё более очевидные причины, по которым кинетическое воздействие не уничтожит человечество, состоит в том, что ядерные державы могут угрожать одной или нескольким странам сразу, но не всем центральным городам мира. Даже если все страны НАТО, Россия и Китай разом начнут войну, то Африка, Южная Америка и другие нейтральные регионы не понесут кинетических разрушений.

2. Радиация

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

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


Из книги «Навыки выживания после ядерной войны» [Nuclear War Survival Skills], 1987

Проведём те же подсчёты, что мы использовали в случае кинетических разрушений, и посмотрим, удастся ли провести атаку, направленную на максимизацию радиоактивных осадков, с тем, чтобы убить всех. Используя Nukemap, возьмём границу в 100 рад в час. Считается, что 400 рад убивает 50% людей, поэтому 100 рад в час наверняка убьёт почти всех людей, не считая укрывшихся в убежище. Нужно переключиться на детонацию на уровне земли, а не в воздухе, потому что в этом случае радиоактивных осадков получается гораздо больше. Взрыв мощностью 1 мт на земле создаст радиацию более 100 рад в час на площади 8000 кв.км. Умножим на 14 000 боеголовок, получим 112 млн кв.км. Это много! Всё ещё меньше, чем 510,1 млн кв.км. площади суши, но больше, чем 10,2 млн кв.км. городских застроек. Судя по всему, этого хватит, чтобы покрыть все места обитания людей, так что в принципе можно убить всех радиацией от существующего ядерного оружия.


Взрыв бомбы в 1000 килотонн на уровне земли. Ярко-красный и красный цвет обозначают контур радиоактивных осадков для 1000 рад и 100 рад в час соответственно, покрывая площади в 1140 кв.км. и 7080 кв.км. соответственно.

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

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

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

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

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

Радиологическое оружие – это ядерное оружие, разработанное для максимизации распространения смертельных радиоактивных осадков, а не для разрушений. Проблема в том, что такое оружие может создавать осадки, делающие места их выпадания непригодными для обитания в течение месяцев или даже лет. Такого рода радиологическое оружие убивает медленнее, но убивает. В принципе, радиологическим оружием можно убить всех. Однако на практике те же ограничения, что накладываются на обычное ядерное оружие, накладываются и на оружие, оптимизированное для долгоиграющих осадков. Кроме того, у него есть и собственные ограничения.

Радиологическое оружие не выдаёт больше осадков, чем стандартные боеголовки, оно просто порождает осадки с другими характеристиками. В итоге количество радиологического оружия, необходимое для покрытия всей поверхности Земли, сделает эту затею чрезвычайно затратной (сравнимой со стоимостью крупнейших ядерных арсеналов), а военным целям служить не будет. Вероятно, из-за его неэффективности в плане разрушения и уничтожения живой силы по сравнению со стандартным ядерным оружием, его никогда не разрабатывали и не развёртывали в больших количествах. Поэтому оно представляет теоретическое беспокойство, но не экзистенциальный риск в ближайшем будущем. Беспокойство вызывают заявления России о разработке беспилотной ядерной торпеды высокой мощности (до 100 Мт), которую, теоретически, можно использовать в качестве радиологического оружия. Но, даже если такие аппараты и будут введены в строй, вряд ли их будет выпущено достаточно много.

3. Изменение климата

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

Потому что:
А) В сценариях наступления суровой ядерной зимы, описанных Робоком с командой соавторов, часть популяции с большой вероятностью выживает.
Б) Модели группы Робока, вероятно, переоценивают риски.
В) Планировщики ядерной войны осведомлены о рисках и включают их в планы определения целей ударов.

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

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

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

Самые последние и детализированные модели потенциальных эффектов охлаждения от полномасштабного обмена ядерными ударами содержатся в работе Робока и других под названием «Возвращение к ядерной зиме с современными климатическими моделями и текущими ядерными арсеналами: последствия всё ещё катастрофические».

Описанные в этих моделях эффекты суровы. В одном из рассмотренных ими случаев летние температуры в северном полушарии оказываются на 10-30 °C меньше обычных. На экваторе падение не такое серьёзное (5 °C), но, по сути, повлияет это на весь земной шар. Наиболее вероятным исходом будет смерть большинства людей от голода. Многие также замёрзнут, но голод, вероятно, представляет больший риск. Даже по этой модели выходит, что в экваториальных районах планеты можно будет выращивать еду, которой будет достаточно для выживания части населения. А через 10-15 лет сельское хозяйство можно будет вести, в ограниченном масштабе, на большей части планеты.


Изменение температуры воздуха в среднем для июня, июля и августа в год, когда пепел поднимется в воздух, и на следующий после этого год

Карл Шульман спросил одного из авторов работы, Люка Омана, о вероятности того, что в описанном сценарии ядерной войны человечество вымрет. Он получил ответ «где-то в районе одного шанса к 10 000 или к 100 000». Мне это кажется вероятным, хотя одно экспертное мнение глубокого анализа не заменит. В своё время Оман объяснил свои рассуждения.

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

Мне кажется, что люди способны выживать и при гораздо более серьёзных изменениях климата, чем те, что описываются в сценариях ядерной войны. Среди млекопитающих люди наиболее стойко переносят резкие изменения температуры, свидетельством чему служит наше повсеместное распространение ещё в доисторические времена. Хотя потеря большей части сельского хозяйства наверняка приведёт к гибели большей части людей на Земле, современные технологии позволят некоторым популяциям выжить. В мире существуют огромные запасы еды, и вероятно, что некоторые из них захватят и будут защищать небольшие группы, которым этой еды хватит на годы. И хотя даже им не хватит еды на 10-15 лет, эти запасы дадут им время на приспособление к новым источникам еды. Благотворительный фонд ALLFED изучил множество альтернативных источников еды, способных поддерживать жизнь популяций в случае ядерной войны или других проблем с солнечным светом, и мне кажется, что существует серьёзная необходимость в поиске ещё большего их количества на случай подобной катастрофы.

Б) Модели группы Робока, вероятно, переоценивают риски

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

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

Наконец-то мы наблюдаем появление здорового обсуждения этих вопросов в научной литературе. Группа Алана Робока опубликовала свою работу в 2007 году, и описала в ней значительные охлаждающие эффекты, вызванные ограниченной региональной войной. Группа Рейзнера из Лос-Аламоса опубликовала в 2018 свою работу, где пересмотрела некоторые из предположений группы Робока, и заключила, что в таком сценарии глобальное похолодание маловероятно. Робок ответил на эту работу, а Рейзнер ответил на ответ. У обоих авторов есть здравые аргументы, но мне кажется более убедительной позиция Рейзнера. Желающим глубже разобраться в этом вопросе стоит почитать этот обмен мнениями. К сожалению, группа Рейзнера не публиковала анализ потенциальных охлаждающих эффектов от полномасштабного обмена ударами современным ядерным оружием. И всё равно нетрудно экстраполировать модель Рейзнера, и увидеть, что охлаждение будет не таким сильным, какое предсказывает модель Робока в аналогичной ситуации.

В) Планировщики ядерной войны осведомлены о рисках и включают их в планы определения целей ударов.

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

Сложно сказать, до какой степени всё это учтено. Планы ядерных войн засекречены. Насколько нам известно, в текущих планах на войну у США города рассматриваются в качестве целей при определённых условиях (но не всех). Однако у представителей министерства обороны есть доступ к секретной информации и моделям, к которым нет доступа у нас, гражданских. Уверен, что планировщики ядерной войны хорошо подумали о рисках изменения климата, вызванных ядерной войной, хотя их заключения или бюрократические ограничения мне не известны. При прочих равных знание планировщиков об этих рисках уменьшает вероятность того, что они случайно допустят вымирание человечества.

Заключение

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

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

Материалы для дальнейшего чтения

ссылка на оригинал статьи https://habr.com/ru/post/530670/