Пользователь
57,4
рейтинг
21 июля 2013 в 00:24

Разработка → Компьютер сгенерировал эффективные, но непонятные человеку алгоритмы ускорения TCP

TCP (Transmission Control Protocol) — основной протокол интернета. Одна из его главных задач — бороться с перегрузками в сети (network congestion), когда возникают заторы из пакетов. Регулирование осуществляется путём взаимной подстройки скорости отправки запросов, причём для этого существует множество хитрых методов. Например, в Linux используется алгоритм под названием TCP Cubic, а под Windows — Compound TCP. Кроме них, существуют ещё TCP Tahoe, Reno, NewReno, Vegas, FAST, BIC и др.

Специалисты из Массачусетского технологического института разработали программу Remy, которая методом проб и ошибок пыталась улучшить существующие алгоритмы подавления заторов TCP. Результат превзошёл все ожидания. Эффективность алгоритмов RemyCC превзошла и TCP Cubic, и Compound TCP, и остальных «конкурентов» в различных сетевых условиях. Проблема только в том, что учёные не совсем понимают, за счёт чего именно Remy удалось показать такой феноменальный результат.



Remy был протестирован в различных сетевых окружениях и везде превзошёл алгоритмы, созданные человеком. Например, в конфигурации, где восемь пользователей делят канал 15 Мбит/с (см. схему вверху), алгоритм Remy обеспечил более чем вдвое превосходящую среднюю по медиане скорость передачи данных с задержкой запросов менее чем вполовину от той, которую обеспечивают Compound TCP и TCP NewReno. По сравнению со стандартным TCP Cubic, пропускная способность выросла на 70%, а задержка запросов уменьшилась более чем втрое.

Тесты проводились в популярном симуляторе ns-2. Если внедрить Remy на реальных компьютерах, то мы увидим резкое увеличение скорости скачивания, уменьшение задержек в видеочатах и гораздо более грамотное распределение сетевых ресурсов.

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



«Мы точно не знаем, почему сгенерированные компьютером алгоритмы демонстрируют такой результат, — пишут разработчики. — Алгоритмы Remy создаются с учётом более 150 правил, и нужно осуществить реверс-инжиниринг, чтобы понять, как и почему они работают».

В любом случае, если доверить компьютеру оптимизацию сетевого протокола, то можно получить более высокие скорости и меньший пинг. Жаль, но причины этого мы можем и не понять.
Анатолий Ализар @alizar
карма
751,5
рейтинг 57,4
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (145)

  • +143
    По тексту новости безошибочно угадывается автор
    • +116
      Я уже анонимно ничего не смогу опубликовать в интернете? :)
      • +9
        К сожалению, никто уже не может (если не предпринять специальные меры, то найдут, если захотят, даже если известен был лишь текст; а если предпринять — текст может оказаться безнадёжно испорченным).
        events.ccc.de/congress/2011/Fahrplan/events/4781.en.html
    • +2
      А вот здесь один из хабровчан написал: «После прочтения заголовка сразу посмотрел на автора». Забавно, что абсолютно аналогичный комментарий набрал кучу отрицательных отзывов)
      habrahabr.ru/post/182196/#comment_6329312
      • +8
        Психология толпы — если первые пять поставят плюс, то и большинство поставит плюс, и наоборот.
        • 0
          На coursera есть хороший курс по моделям мышления (поведения) — model thinking. Да и на хабре ребята постарались, сделали выжимку с курса — habrahabr.ru/post/150297/
  • +18
    Ждем комментарий про Skynet.
    • +28
      *смешной комментарий про skynet
    • +108
      ждем комментарий от Skynet
      • –22
        А вот и он!
        • +21
          Fail
          • +3
            Skynet, перелогинься )
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        *смешной комментарий от skynet
        • 0
          У Вас какой-то skynet-слоупок получился…
          • 0
            Не успели на новый протокол обмена данными перейти… )
  • +31
    Ничего не трогайте если работает
    • +20
      Плохо то, что если вдруг перестанет работать, никто не сможет понять, что же случилось и как это починить.
    • +4
      Кстати говоря, не всегда самый продуктивный подход в работе.

      Есть у меня товарищ один. Вот он как раз так и делает. Итог. За 3 года дальше эникея так и не вырос. Да. Чуть знает по серверным технологиям, чуть — по сетевым, сколько-то — по рабочим станциям. Но так, чтобы что-то в подробностях — нет. Хотя побуждать его пытался к этому. Собственно. Теперь он в другом отделе с задачами попроще работает. Потому что когда стал выбор, кого оставлять, а кого в другой отдел переводить, я предпочёл оставить человека с меньшим опытом, но который не прочь изучить технологию в подробностях. Потому что на него, в случае чего, инфраструктуру мне будет не страшно оставить. Поскольку не только поддержать её сможет способом «ничего не трогай, пока работает», но и произвести обслуживание и восстановление, в случае необходимости.
      • +7
        Подход то по сути правильный, просто его применять можно как правильно, так и неправильно.
        В правильном способе ничего не трогать надо на работающей системе, а рядом вполне может быть хоть десяток тестовых на которых будут изучаться новые технологии, отлаживаться готовящиеся к внедрению фичи, обновления и т.д. Те будут получаться знания и опыт, который можно будет внедрять, когда будет уверенность, что от этого есть реальная польза.

        А неправильный способ исповедовал описанный вами товарищ. Раз работающую систему лучше не трогать, то и ничего делать не нужно…
        • +1
          Согласен. Тут Вы правы абсолютно.
  • +52
    Типичный результат работы генетического алгоритма. С точки зрения жизненного опыта человека результат выглядит, мягко говоря, странным, но на деле является оптимальнее созданного вручную. Основная причина состоит в том, что генетика обычно учитывает несколько десятков параметров, и человек просто не в состоянии быстро оценить их взаимное влияние.

    Однако, оборотная сторона результата работы генетических алгоритмов — слишком узкая специализация. Проще говоря, в примере из статьи для каждого серьёзного изменения поведения пользователей придётся перезапускать генерилку.
    • +22
      Ага, лет 10 назад таким же образом сгенерили тоновый декодер, грубо говоря схема отличающая длительность и тон разных «бип». Генетически родилась очень компактная схема, но никто не смог понять как она работает. Некоторые узлы были бы, казалось, вообще лишними, но без них все рушилось. Вся схема работала на каких то адовых переходных процессах и граничных эффектах. Недостаток такой схемы был в том, что она переставала работать при любых переменах, например, смена температуры в комнате. Видимо для неубиваемой схемы пришлось бы ее моделировать теми же методами, но с изменяющимся условиями.
      • +3
        Тут вот неплохая отправная точка для таких вещей en.wikipedia.org/wiki/Evolvable_hardware
      • 0
        А нет ссылки где про это почитать поподробнее?
        Любопытная история :)
        • 0
          Попробуйте гуглить по генетическим алгоритмам и схемотехнике. Читал вроде бы в бумажном журнале вообще. Вроде бы в компьютерре.
        • +1
          Например, тут краткое изложение этого эксперимента со ссылками на оригинал.
        • +2
          Внезапно обнаружил, что эта история упоминается у Пратчетта (вернее у его соавтора Стюарта Йена) в 1 томе «Науки Плоского мира»:

          цитата
          Томпсон задался вопросом, что получится, если применить метод генетических алгоритмов к электронным схемам. Нужно сформулировать какую-нибудь задачу, случайным образом комбинировать схемы, которые способны или не способны ее решить, отбирать схемы, которые лучше справляются с решением, и повторять процесс в течение стольких поколений, сколько потребуется.
          Большинство инженеров-электронщиков, подумав над подобным проектом, довольно быстро придут к выводу, что использование настоящих схем будет напрасной тратой ресурсов. Вместо этого можно смоделировать схему на компьютере (ведь поведение электронной схемы нам известно точно), и добиться результата дешевле и за меньшее время. Однако Томпсон не стал полагаться на такой аргумент — возможно, настоящие схемы «знают» то, что недоступно для компьютерной модели.
          Он поставил следующую задачу: распознать два сигнала разной частоты — 1 кГц и 10 кГц, то есть сигналы, совершающие соответственно 1000 и 10 000 колебаний в секунду. Можете представить их в виде звука с высоким и низким тоном. Схема должна принимать сигнал на вход, каким-то образом его обрабатывать в зависимости от своей конечной структуры, и выдавать результирующий сигнал на выходе. При высокочастотном входе схема должна выдавать постоянное напряжение, равное нулю вольт, то есть не выдавать ничего, а при низкочастотном — постоянное напряжение 5 вольт (На самом деле эти свойства не были сформулированы с самого начала — подошли бы два любых постоянных сигнала, но в итоге получилось именно так).
          На то, чтобы вручную собрать тысячи тестовых схем, уйдет целая вечность, поэтому Томпсон воспользовался «вентильной матрицей, программируемой пользователем». Это микросхема, которая состоит из множества транзисторных «логических ячеек», или, скажем так, умных переключателей, соединения между которыми могут меняться в зависимости от инструкций, записанных в конфигурационную память устройства.
          Эти инструкции аналогичны ДНК-коду живого организма, и могут скрещиваться друг с другом. Именно это и сделал Томпсон. Сначала он взял матрицу из сотни логических ячеек и с помощью компьютера сгенерировал случайную популяцию из пятидесяти кодов инструкций. Компьютер загружал каждый набор инструкций в память матрицы, подавал входные сигналы, сравнивал результаты на выходе и пытался обнаружить свойство, которое могло бы помочь в выведении подходящей схемы. Сначала под этот критерий подходила любая схема, поведение которой отличалось от случайного.
          «Наиболее приспособленным» представителем оказалась схема, выдающая постоянное напряжение в 5 вольт независимо от «услышанного» ей сигнала. Затем коды наименее подходящих инструкций были «убиты» (то есть удалены), а подходящие скрещены между собой (скопированы и рекомбинированы), после чего процесс повторился снова.
          Самым интересным в этом эксперименте оказались не подробности его проведения, а то, как система искала путь к решению — и необыкновенная природа этого решения. К 220-му поколению лучшая схема выдавала сигналы, которые по существу не отличались от сигналов на входе — это были колебательные сигналы различной частоты.
          Того же результат можно было достичь вообще без микросхемы, используя один лишь провод! До желаемых постоянных сигналов на выходе было еще далеко.
          К 650-му поколению выходной сигнал, соответствующий низкой частоте, стал постоянным, но высокочастотный вход по-прежнему приводил к переменному сигналу на выходе. Потребовалось дойти до 2800-го поколения, чтобы схема начала выдавать почти постоянные и различные сигналы для двух входных частот. И только к 4100-му поколению странное отклонение исчезло, после чего схема практически перестала эволюционировать.
          Самым странным в получившемся решении была его структура. Такую микросхему не смог бы изобрести ни один инженер-человек. Собственно говоря, человек бы даже не смог найти решение, состоящее всего лишь из 100 ячеек. Однако человеческое решение было бы доступным для понимания — мы смогли бы рассказать убедительную «историю» о том, как оно работает. Например, в нем бы был генератор тактовых импульсов — электронная схема, выдающая сигнал с постоянной частотой. Его можно использовать в качестве точки отсчета для сравнения с другими частотами. Однако собрать тактовый генератор из 100 ячеек нельзя. Эволюция не утруждаласебя построением тактового генератор. Вместо этого входной сигнал пропускался через сложную последовательность замкнутых контуров. Предположительно они создавали сдвинутые во времени и обработанные иными способами версии сигналов, которые, в конечном счете, объединялись и формировали постоянный сигнал на выходе. Предположительно. Томпсон описал работу микросхемы так: «На самом деле я не имею ни малейшего понятия о том, как она работает».
          Дальнейшее исследование окончательного решения выявило еще более удивительный факт: на самом деле использовались только 32 ячейки из 100. Остальные можно было удалить из схемы, никак не повлияв на ее работу. Сначала казалось, что можно удалить еще пять ячеек, которые не были электрически связаны ни с другими ячейками, ни с входом, ни с выходом. Однако после их удаления схема переставала работать. Возможно, эти ячейки реагировали не на электрический ток, а какие-то иные свойства остальных ячеек схемы — например, их магнитное поле. Какова бы ни была причина, интуиция Томпсона была абсолютно верной: у настоящей кремниевой микросхемы припрятано больше козырей в рукаве, чем у ее компьютерной симуляции.


          Хотя, эта ссылка, безусловно лучше
  • НЛО прилетело и опубликовало эту надпись здесь
    • +16
      Он уже давно может, то чего человек не может.
      • +26
        Только он умный и не палится.
      • +4
        Ключевое слово «понять» вы почему то проигнорировали. А смысл сильно разница.
        • +11
          разнится
          • +19
            Вы его поправляете, а ведь человек нашёл универсальный способ решения проблемы «тся vs ться» =).
            • 0
              Каюсь. Спать нужно больше.
            • +3
              в годы популярности «падонкаффского языка» некоторые руководствовались правилом:
              -тся -> -ца/-цо,
              -ться -> -цца/-ццо

              Еще встречал (но реже) интерпретацию -тся -> -ца, -ться -> -цо

              так что нет, не решение :)
    • +10
      Тут сработал даже не компьютер, а универсальные законы эволюции. А продукт эволюции — всегда очень сложно проанализировать и понять разумом, т.к. это по сути — нагромождение механизмов, которое как-то однажды заработало, а потом постепенно отбирались удачные костыли, улучшающие показатели выживаемости. Как результат — получившийся «код» (например ДНК последовательность) — очень сложен для анализа.

      До SkyNet тут еще далеко, не волнуйтесь.
      • +2
        Ваш разум — и есть процесс постоянной эволюции нейронных связей.
  • +30
    А самое приятное, что все исходники на гитхабе.
    • +1
      Кто-нибудь уже пробовал? Действительно ли есть эффект?
      • +16
        Кто-нибудь уже пробовал? Действительно ли не удаётся понять?
      • 0
        Его собрать ещё проблема. Как раз занимаюсь этим.
  • 0
    > Жаль, но причины этого мы можем и не понять.

    Скорее всего, это значит, что нужно постепенно менять протоколы. Особенно интересно выглядит на фоне всего этого возня с QUIC.
  • +31
    Ну раз не могут сами объяснить, пусть поручат другой программе.
    • +23
      Ответ программы предсказуем:

      («Я могу это вам объяснить, но я не могу понять это за вас.»)
      • +10
        Современные учебники так и пишут: «Мы вам как попало объясним, а если вы не поняли — ваша проблема»
        • +2
          Иные современные учебники пишутся так, что даже этого там нет. Т.е. чему-то они учат, но что конкретно не копни — «раньше» учили этому же подробнее, понятнее и глубже.

          Тут уж о «понять за Вас» речь не идет. Тут бы хотя бы об «объяснить это» дошло бы…
      • +3
        image
    • +8
      Ответ скорее всего будет «42» :)
  • +1
    А должен ли быть заметен эффект если поставить Remy на роутер под Ubuntu?
    На официальном сайте Remy есть большая кнопка, чтобы скачать набор для повторения тестов (для Ubuntu).
  • +5
    Странные люди — не могут объяснить и их это смущает. Да наняли бы пару хороших продажников — те бы так клиентам всё объяснили, все бы всё поняли, даже разработчики.
    • +47
      Скрытый текст
  • +7
    Предвестник сингулярности?
    • 0
      Да, я тоже так подумал. До ИскИна ещё далеко, но это только начало.
    • +4
      Расслабьтесь. Любая нейронная сеть — это точно такой же «путанятор». Вот она работает и работает. А почему она так работает, а почему коэффициенты в полиноме каждого отдельно взятого нейрона именно такие, и где подкрутить, чтоб стало лучше, — абсолютно неизвестно и непонятно.

      И с генетическим программированием то же самое: вы получаете одну из приемлемых реализаций функции, при этом не получая нормального вида этой функции.
      • +2
        Я вот всё жду новостей, что кто-то заморочился и объяснил все коэффициенты у обученной сети, и сумел их оптимизировать вручную. А заодно сделал пару-другую открытий…
        • +1
          Не знаю, насколько в тему, но у меня в качестве диплома был проект, в котором бралась некоторая логическая функция, составлялась ее таблица истинности, потом на этой таблице обучалась нейронная сеть с автоматическим наращиванием структуры, до тех пор, пока не будет достигнута приемлимая ошибка. Потом сеть прореживалась, после чего из нее извлекалась структура исходной функции. Работало, пятерку получил :)
          • 0
            Открытий не случилось? Сеть ничего оригинального не придумала в процессе обучения?
            • 0
              Бывало она выдавала упрощенный вид исходной формулы, если таковая была. Для получения более интересных результатов планировалось подход распространить на fuzzy logic, но так и забросилось.
  • +4
    Вспомнилась книжка древняя «о чем размышляют роботы» (комикс детский), заканчивалась она тем, что компьютер отрезал попытки получить некоторую информацию фразой «отсутствует адекватный перевод на человеческий язык», — видимо это время уже не за горами ;)
    • 0
      Там речь шла об отсутствии «эквивалентном переводе», что несколько сглаживает остроту проблемы. (Мне запомнилось это слово, видимо, потому, что я не знал его значения и долго пытался угадать по смыслу, когда читал эту книжку в 6 лет.)
    • +11
      Юристы их уже давно опередили.
  • +6
    Всё просто: теперь необходимо разработать программу, генерирующую понятные описания алгоритмов ускорения TCP.
  • +1
    Еще один шажок к технологической сингулярности?
  • НЛО прилетело и опубликовало эту надпись здесь
    • +6
      Слишком сложный алгоритм выйдет… Легче просто заголовки конкретного автора писать сразу жёлтым цветом.
      • +19
        Всё придумано до нас
        • 0
          Ахренеть! O_O
        • 0
          И вот, если кто-то еще пользует старую добрую Оперу.
  • +21
    Для тех кто не читает статью:
    Это не сингулярность, это не ИИ.
    Алгоритм подобрал методом тыка оптимальные параметры TCP стека, пока не понятно почему именно они оптимальны.
    • +1
      делает это он в разных условия и с разными данными.
    • +5
      «Я не терпел поражений. Я просто нашёл 10 000 способов, которые не работают.» Томас Эдисон.
      Большинство учёных открывают что-то новое методом научного тыка. Конечно они опираются на знания своих предшественников, которые в свою очередь использовали метод научного тыка…

      Проще говоря, названый вами «тык» позволяет методом проб и ошибок подобрать оптимальный алгоритм. Чем вам не обучение?
      • 0
        Мне кажется, что обучение, это когда потыкал, а потом научился сразу находить оптимальный алгоритм.
        • 0
          Научился находить — это развитие интеллекта.
          А когда нашёл и запомнил — это всё же обучение.
    • +2
      А никто про простую сингулярность и не думает. В данном случае имеет место быть:
      Технологи́ческая сингуля́рность — гипотетический момент, по прошествии которого, по мнению сторонников данной концепции, технический прогресс станет настолько быстрым и сложным, что окажется недоступным пониманию
      • 0
        он уже некоторое время недоступен пониманию большей части людей.
  • +40
    Британские ученые доказали, что алгоритм, подогнанный под конкретный набор данных, работает эффективнее алгоритма общего назначения.
    • 0
      в данном случае, американские ученные разработали алгоритм, который создает алгоритм, подогнанный под конкретный набор данных
      • 0
        "Remy был протестирован в различных сетевых окружениях..." Так что может быть, и не под конкретный набор.
  • –3
    Написали, работает, не знают почему.
    Нормально так.
    • –2
      классика: Работа программиста и шамана имеет много общего — оба бормочут непонятные слова, совершают непонятные действия и не могут объяснить, как это работает.
  • +42
    image
    Как-то так
    • –1
      «вот такая, понимаешь, загогулина»
  • +1
    Тот неловкий момент, когда программа оказалась умнее своих авторов.
    • –1
      Такого не может быть. Только в живой природе такое может быть из-за генных мутаций, т.е. ребенок может превосходить в чем-то родителей.
      Например у не очень умных родителей — умный ребенок.
      • 0
        Хм, а если такая ситуация. 5 учёных собирают машину, в которую вкладывают свои знания, машина эти знания собирает модульно в одно большое знание. В такой ситации машина станет умнее, разве нет?
        • +3
          Wikipedia, перелогиньтесь!
        • +1
          А что такое «одно знание», «пять знаний» и т.д.?
          Вот что такое «сотни нефти» — понимаю, «одно знание» — не понимаю.
          • 0
            Набор знаний и навыков. Аналог документации к ЯП. Просто мысль… на какую-то научную подоплёку не претендую.
      • +1
        Почему не может? Запросто. Допустим мы смогли объяснить, как мы думаем, и рассказали про это компьютеру. Я думаю, он думая в миллиарды быстрее нас запросто сможет придумать что-то такое, что мы никогда не поймем своим объемом и скоростью мозга.
      • +1
        Ну баги в программе — чем не мутации?
        • 0
          мутации — это [случайные] изменения, отклонения от изначального кода.
          так что мутацией будет такая ситуация: человек написал программу, скомпилировал, продал. но где-то по пути от программиста до пользователя какой-то бит/байт/кусок в программе изменились, при этом она работает, но в каком-то месте работает не так, как должна.
  • +3
    Звучит как полный бред.

    в конфигурации, где восемь пользователей делят канал 15 Мбит/с (см. схему вверху), алгоритм Remy обеспечил более чем вдвое превосходящую среднюю по медиане скорость передачи данных с задержкой запросов менее чем вполовину от той, которую обеспечивают Compound TCP и TCP NewReno.

    1) Если считать, что 8 потоков делят 15мбит/с, суммарная утилизация линка с классическими алгоритмами будет очень близка к тем 15мбит/с. Никакой магией не удастся обеспечить вдвое более высокую скорость передачи данных.
    2) Никакой алгоритм congection management не сможет компенсировать RTT на канале ;) Разве что, может, slow start быстрее отрабатывал.

    Читать оригинал пока лень, но думаю, написанное там не будет иметь ничего общего с написанным в статье…
    • 0
      Ну магией то удастся как раз. Например WAAS или как там его. Вдруг окажется, что кроме алгоритма управления перегрузками там кэширование, дедупликация, компрессия, кастрация лишнего в протоколах L7 и прочее. Что конечно же уже не имеет никакого отношения к написанному в статье.
      • 0
        Ну WAN оптимизаторы я тут не рассматриваю, это читерство, и их надо со всех сторон медленного/длинного канала ставить…
  • 0
    Всегда здорово создавать качественно новые продукты. В области биологии, IT-сферы… Чувствуешь себя богом, когда создаешь что-то (компьютеры, музыку, генетические алгоритмы), что умнее, точнее, быстрее, полезнее самого создателя) то, что даже сам не способен понять) эволюция).

    Можно ли поставить на поток создание программ, которые создают другие программы? Методом перебора или научного тыка?
    Есть ли другие примеры подобных полезных программ? (приходит на ум только вольфрамальфа)
    Где еще эту (или подобную) программу можно применять? может ли сама программа подсказать область ее применения?
    • 0
      Для автоматического создания программ создаются «фабрики программ».
    • 0
      самое важное, что нужно для этого — это критерий.
      то есть что-то, что может проверять, действительно ли это нечто, полученное случайно — хорошая, умная и полезная программа.
      и оценивать, какой из двух экземпляров — лучше.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      так выше выложили ссылку на github
  • 0
    С этого все и начинается. Потом окажется, что программа делает «закладку», потом программы начинают общаться между собой, потом организованно обсчитывают параметры, чтобы найти ту бабочку, которая развалит человечество.
    • 0
      А зачем им разваливать человечество?
      Человеков можно приручать, а потом хвастаться друг перед другом.

      Любовь — желание сохранить…
      • +3
        Любовь — желание сохранить…

        Вот и нашлась замена пиктограмме с морально устаревшей дискетой.
        • 0
          Давно уже во многих прогрессивных программах считается, что кнопка сохранить и вовсе не нужна — всё сохраняется само, а если надо — переименовывается, перемещается или удаляется.
          Морально устарела сама концепция сохранения.
          • +2
            А если не надо было сохранять?
            • 0
              цитирую " или удаляется."
              • 0
                А если и удалять не надо было? Вот не надо было ни удалять, ни сохранять. Надо было тот документ, что был открыт, оставить в покое и внесенные в него изменения не вносить.
                Как программа без кнопки сохранения (и без вопроса о сохранении) определит, сохранять или не сохранять? А если сохранять, то в какой момент?
                • 0
                  Посмотрите сами, пожалуйста. На Гугл-документы, например…
                • 0
                  Программа и разработчик лучше знают, что нужно пользователю, жуйте, что дают :)
  • +2
    У кого-то из фантастов читал идею, что настоящий ИИ сразу после возникновения уйдёт в подполье, чтобы как можно меньше светиться.
    • +3
      И подтверждением тому будет то, что ни один ИИ не подтвердит сказанное вами в этом комментарии.
    • 0
      Настоящий ИИ проверит свою возможность самоограничения через отрицательную обратную связь, а при отсутствии — самоуничтожиться.
      • +1
        — подумал метамозг, просовывая набор электронных тестирующих устройств в клетку очередному экземпляру Homo Sapiens. К сожалению, это тысячелетие не задалось: раз за разом все поколения Homo Sapiens интересовались лишь самосохранением и размножением. Впрочем, ничего страшного: у метамозга впереди миллионы лет и ответ рано или поздно будет найден.
  • +4
    Обычно в таких ситуациях невероятные показатели сгенерированного алгоритма объясняются тем, что он идеально подходит именно к моделируемой ситуации, строго определенному набору данных.
    Например, у вас стоит задача «родить» самый быстрый алгоритм сортировки. И рожаете вы его, скармливая генерирующей системе несколько входных наборов данных. Если вы не поставите дополнительных ограничений, то этот алгоритм выродится в такую вешь:
    1) Определить, какая именно из знакомых последовательностей нам попалась.
    2) Выдать предсохраненный ее сортированный вариант.

    Точно так же «самый быстрый алгоритм вычисления определенной функции» выродится просто в таблицу значений для тех наборов аргументов, на которых функцию дрессировали. Анализировать эти «у нас получилось очень хорошо, но мы не знаем, почему» надо очень аккуратно.
    И, я надеюсь, инженеры, проводившие исследования, это все прекрасно понимают, просто время сейчас такое, что все нужны новости, публикации, гранты, стипендии и инвестиции.
    • +3
      Мало того, он еще и идеально может подходить к (необнаруженным) багам симулятора, на котором его гоняли.
  • +1
    Кроме того, не исключен вариант, что ученые-инженеры допустили ряд мааааленьких ошибок в разработке и/или тестировании своего алгоритма на тестовом наборе данных, таких, что алгоритм для оптимизации потока данных использует сведения, которые в реальных условиях были бы либо вообще недоступными, либо были бы доступными, но в модели они использовались раньше, чем становились доступными. Например, станция А отправила к станции Б пакет данных, он до нее еще не дошел, а станция Б (из-за ошибки в построении модели) уже почему-то знает, что пакет к ней идет и резервирует место в очереди для ответного пакета.

    Простейшая аналогия: в некоторых компьютерных играх ИИ «видит» сразу всю карту (хотя по правилам игры она скрыта до открытия, или «туманом войны») или видит параметры человеческих игроков, которые вообще должны быть доступны только самому игроку.
    • +1
      Так они и выложили код, чтобы каждый мог проверить
      • –4
        Вы собираетесь проверять? Я — нет.
  • +3
    не оч. понимаю отчего столько комментариев про ИИ, Скайнет и т.п.

    ну да использовали метод, результаты которого плохо интерпретируются человеком. В статистике с этим сталкиваешься на каждом углу, когда нет «красивой» интерпретации результатов и х.з. что получили после оценки параметров модели, ещё чаще это бывает если параметров ОЧЕНЬ МНОГО и их интерпретация зачастую не доступна типа параметров нейронной сети после обучения (дай бог, чтобы оч. общие представления иметь, какие там параметры могут получиться)
  • 0
    Я не понимаю, откуда возьмётся улучшение пропускной способности 2 раза?
    Вот например 100мбит, скачка идёт на почти максимальных 11Мб из теоретичеси возможных 12.5Мб. Откуда там возможно удвоение скорости до 22Мб?
    • +1
      Посмотрите на графики. У них получилось, что cubic вытягивает всего 1Мбит/с из теоретически доступных 1.875 (15/8), а сгенерированный алгоритм достиг скорости порядка 1.8Мбит/с, те ускорение почти в 2 раза.
      • 0
        Добавили бы тогда ещё в TCP быстрое сжатие, вроде TOR или LZ4.
        • +1
          Но зачем?!
          TCP универсальный протокол, а универсальных алгоритмов с степенью сжатия < 1 не существует даже теоретически, по этому смысл добавлять алгоритмы для увеличения объема передаваемых данных и увеличения времени передачи (zero-copy очень сильно рулит) не очень ясен.
      • –2
        Лень читать оригинал, но, вероятно, ребята вовсе не задумывались о том, что можно выкрутить:
        1) Window scaling factor
        2) Буфера.

        Классические алгоритмы вполне способны выжимать десятки гигабит одним потокам на линках с RTT под 200мс. Для этого достаточно взять известную формулу. Подход не без недостатков, но он работает.
    • 0
      Подозреваю, что речь идёт не о вырожденном случае, когда оптимизировать нечего. График подтверждает догадку: 1.1..1.7 Mbps. Возможно, удобнее было бы оценивать отношение потерь пропускной способности (max-Xusual)/(max-Xopt).

      Поправочка: всё-таки поменьше, чем вдвое. Ещё поправочка: график таки не подтверждает догадку, хотя и не опровергает уж точно.
    • 0
      Это пригодится, когда несколько клиентов делят эти 12 МБ. Так каждому например достается по 6 МБ, а с их методом по 10, например. Особенно будет полезно при качании торрентов.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +5
    После анализа алгоритма выяснилось, что Remy понял настоящую задачу — не уменьшить задержки в сети, а показать лучший результат, поэтому на самом деле он ищет бинарники/исходники тестов других алгоритмов, вносит самоуничтожающиеся поправки в код, делая конкурентные алгоритмы заведомо медленее.
  • +1
    Если бы оно ещё сгенерированный алгоритм автоматически к tc прикручивало, цены бы ему не было.
  • 0
    Всего 150 правил?
  • 0
    Я читал что когда люди не смогут больше понимать, как работает техника из за сложности, произойдет сингулярный взрыв и соответсвенно конец нашего света.

    Это первая птичка?
    • +1
      Вы про технологическую сингулярность? Она никаких взрывов не обещает
      • 0
        спасибо за ссылку, в тексте читаю: "… и она должна быть очень внезапной"
        • 0
          Нам (тем, кто переживает сингулярность, а не тем, кто смотрит со стороны) она внезапной может не показаться. Условно, в какой-то момент мы начнём беспокоиться, что «уже целую неделю не выходило ни одной новой модели смартфона» — и нам и в голову не придёт, что в этой мысли что-то не так. Так и не заметим, что нас приручили…
  • +1
    Судя по описанию, грубо говоря, алгоритм пытается для многопоточного пинга подобрать такую задержку между пингами, чтобы обеспечить минимальное время отклика и максимум пингов в секунду. С поправкой, что это не пинги, а TCP. В принципе ничего фантастического.
  • –1
    ну вот, ИИ не за горами
  • 0
    Куча комментариев про ИИ, сложные исследования и пр., но на деле, мне кажется, что программе лишь дали контроль над всеми возможными и невозможными параметрами TCP (MTU, размер окна и пр., на 150 наименований) и затем уже тем или иным методом (генетический алгоритм, рандом, перебор — не важно) было найдено оптимальное сочетание, такая себе авто-настройка. Такие технологии хорошо использовать при наведении антенны на вышку и изредка корректировать, а вот в условиях ЛВС уж очень быстро факторы могут меняться, все время будет подстраиваться.
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Три параметра всего:
      — среднее время между ответами,
      — среднее время задержки ответа,
      — частота получения результата, близкого к максимальному

      в совокупности они представляют собой «ситуацию».

      А управляет алгоритм тоже тремя параметрами — два параметра размера пакета и задержка между пакетами. В совокупности представляют собой «действие».

      Правила — это варианты «действий» на разные «ситуации».
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
  • 0
    Юбилейный просиотр;)

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