2008-04-19

РИТ-2008: Доклады: День первый

2 День первый

2.1 Инфраструктура крупного географически распределенного проекта

Рассматривалась задача обеспечения (в основном железом), глобальной вебдваноль соц.сети.

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

  • Много дешевого железа и алгоритмы дублирования (я так понимаю, это подход Google);
  • Самое брендовые железяки и софт (платная оптимизированная файловая система) и т.п;

они выбрали вторую.

Докладчик перечислял список разных умных девайсов CISCO, аппаратно умеющих и юзеров адаптивно, балансируя загрузку, разбрасывать по кластерам (BGP, GeoIP), и DDOS-атаки отражать, и вышивать крестиком и т.п.

Другие мысли:

  1. Глобализация — коннективити стало хорошее, можно делать несколько датацентров по миру, вместо одного.
  2. Канал у датацентров не покупать — будут обвешивать.


Кстати, проект — это сеть http://badoo.com — я даже зарегистрировался, осмотрелся — очень оптимизирована под знакомства. Контент текстовый не надо, все грузят фотки, описывают себя кучей атрибутов (рост, вес, секс-атрибуты) — на это способен и абсолютный тинейджер — и поехали — оптимальный сайт знакомств. Работает шустро, интерфейс приятный, рекламы не заметно. Думаю, будет иметь успех.

2.2 Content Delivery Network

Продолжение темы #Инфраструктура крупного географически распределенного проекта, теперь софтверная часть. Эвристики для разгона, многоуровневая оборона кеширующими прокси (nginx) против запросов пользователя, в общем одно только слово твердил — «ЛимпопоКеш, кеш, кеш». Т.е. вся структурная сложность архитектуры систем в результате сводится к примитивной термодинамике/сантехнике котельной: «Объем горячего кеша», «Горячий/теплый/холодный» кеш, выравнивание объемов кеш-резервуаров (шлюзование?), «Не ошибитесь с объемами, иначе вам грозит глобальное потепление контента!». Стимпанк какой-то — IT-инженеры видятся чумазыми кочегарами, крутящими вентили («стравить давление», «заполнить цистерну») в серверных.

Такая вот специфика — скорость взамен целостности. Я пару минут побродил по описываемой сети http://badoo.com, встретил и падение страницы, и случай, когда после поиска ссылки на двух разных пользователей вывели на один и тот же профайл. Интернет-развлекальщикам конечно так делать можно, но у нас, в учетных приложениях, такие подходы не нужны.

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


Не могу сказать, что понял докладчика. Во-первых, никакой функциональности типа «фото для друзей», на badoo.com я не обнаружил (правда я только зарегистрировался и «друзей» там у меня нет — но все равно, обычно такая функциональность всплывает сразу).

Докладчик говорил что-то про «цифровые сертификаты», насколько я понял, это подстроки в URL (см. параметр «cc» в нижеприведенном урле с моей фотографии на этом ресурсе).

Без этого (или с неправильным) параметром действительно не отдает («403 FORBIDDEN, NGINX/0.6.26»), но как это мешает доступу неавторизованных пользователей — непонятно — прекрасно по этому URL отдает кому угодно (даже REFERER не проверяется) — можете впрочем проверить. Основная защита видимо в JavaScript+CSS на странице просмотра фоток, которые не дает тупому пользователю сделать правой кнопкой на фотке «Copy Image» и посмотреть URL картинки. Наверно это да, правильно.

P.S. Кажется нашел защищенный контент — там есть фотоблоги («События пользователя») и они могут быть защищены паролем (или только для «друзей»). Возможно тут как раз эти «сертификаты» и вычисляются как что-то одностороннее от пароля или id-а пользователя.

2.3 Хостинг 2.0 и S+S

Типичный добротный сейлз-доклад от Микрософт: «Микрософт любит вас!», «Партнеры это наше все» и т.п.

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

2.4 Технология индексирования и поиска изображений в Интернет

Автор более-менее пояснял алгоритм работы (причем есть сервис, с которым можно поэкспериментировать — http://www.photodate.ru )

Насколько я раньше экспериментировал с подобными сервисами (типа http://myheritage.com), там все было как-то фантасктически тупо — т. е. грузишь фотку где «нос поднят» — тебе возвращают фото «звезд-мужчин», — «опустил нос и потупил глазки» — женщин.

Ну здесь тоже вроде пока все туманно — с чего бы первой фотке блондинки на кресле (http://www.loyl.ru/venga666/) быть похожей на этого урода (http://stas-fomin.narod.ru/photos/bib_marriage.jpg) (это вернулось мне в первом же поиске).

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

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

Но я не в теме совсем, это просто мои фантазии, а автору респект, за попытку решения нерешаемого.

2.5 Поиск слов в аудио

Приятный «негрузящий» доклад, в основном о рынке для распознавания аудио, а не о самом алгоритме.

Насколько я понял это очередной стартап физтехов:

Очень похоже, что ребята работают также на силовиков, ибо в отличие от мирных алгоритмов, распознающих там лекции и т. п., как скромно сообщили авторы: «наш алгоритм оптимизирован на GSM-контент».

Просто дежавю какое-то, сразу вспомнил Солженицын «В круге первом» (http://www.lib.ru/PROZA/SOLZHENICYN/vkp1.txt), где в 50-x, ученые из «шарашки» занимались распознаванием записанной телефонных записей.

Дежавю усилилось в момент демонстрации. Вызвали первого попавшегося («итак, где у нас первый попавшийся»), после чего попросили его «прочтите именно эти слова». А-а-а! Не могу не процитировать урезанное описание аналогичной сцены демонстрации из Солженицына:


Рубин шепнул:

— Если — ты, и фраза твоя, скажи: «Звуковиды разрешают глухим говорить по телефону.»

Стоя в одном шаге от замминистра, Нержин уставился в него нахальным лагерным взглядом:

— Фразу — вы придумаете? — спросил он строго.

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

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

«Звуковиды разрешают глухим говорить по телефону.» — И это действительно так? — удивился Селивановский.

— Да.

— Читайте, пожалуйста.

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

— Вот видите, некоторые звуки не составляет ни малейшего труда отгадать, например, ударные гласные или сонорные. Во втором слове отчетливо видно — два раза «р». В первом слове ударный звук «и» и перед ним смягченный «в» — здесь твердого быть и не может. Еще ранее — форманта «а», но следует помнить, что в первом предударном слоге как «а» произносится так же и «о». Зато «у» сохраняет своеобразие даже и вдали от ударения, у него вот здесь характерная полоска низкой частоты. Третий звук первого слова безусловно «у». А за ним глухой взрывной, скорей всего «к», итак имеем: «укови» или «укави». А вот твердое «в», оно заметно отличается от мягкого, нет в нем полоски свыше двух тысяч трехсот герц. «Вукови…» Затем новый звонкий твердый взрывок, на конце же — редуцированный гласный, это я могу принять за «ды». Итак, «вуковиды». Остается разгадать первый звук,он смазан, я мог бы принять его за «с», если бы смысл не подсказывал мне,что здесь — «з». Итак, первое слово — «звуковиды»! Пойдем дальше. Во втором слове, как я уже сказал, два «р» и, пожалуй, стандартное глагольное окончание «ает», а раз множественное число, значит, «ают». Очевидно, «разрывают», «разрешают»… сейчас уточню, сейчас… Антонина Валерьяновна, не вы ли у меня взяли лупу? Нельзя ли попросить на минутку?

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

Селивановский пораженно шептал:

— Это удивительно… это удивительно…


2.6 Sphinx, или как обыскать терабайт

Ну я несколько уже выпал из темы опенсорсовых полнотекстовых поисковиков, был уверен что основной мейнстрим — это Lucene (например внутрикомпании мы используем OmniFind), оказалось таки сделанное руками на C++ всегда забъет Java-библиотеку по скорости и портируемости (Java-библиотеки всегда плохо прикручивались к скриптовым фреймворкам). Так что при случае, надо присмотреться к http://www.sphinxsearch.com/

2.7 Коллаборативная фильтрация, как считать рекомендации

В общем, для тех потребителей (продуктов культуры и матценностей), кто не способен (или не желает тратить время) породить даже простой отзыв — представляется универсальная система быстрого сбора отзывов обо всем.

Это выглядит как измерение квантовых величин — непредсказуемое и бесконечно сложное состояние Божественного Творения (Человека) — проекцируют на базис из огромного (но конечного) числа измерений (объектов культуры и товарного рынка), и в результате, под видом того, что человек измеряет эти объекты («Человек есть мера всех вещей…» ©), на самом деле, происходит измерение самого человека, и через некоторое время сама система начинает подсказывать оценки, потом рекомендовать объекты для потребления, потом рекомендовать человеку других людей (для потребления или так…).

В общем, жуткая штука — типичная «Matrix has you».

Чтобы не быть голословным, завелся на http://belonesox.imhonet.ru/. К сожалению, десять раз делал попытку заполнить профиль — десять раз получал «Изменения в данных Вашего профиля успешно сохранены», и черта с два там что сохранилось. А так живенько все, хотя там трудно добиться целостности информации о контенте. Совет разработчикам (если читают) — попробуйте подключится к крупным «каталогам культуры с отзывами», типа http://world-art.ru/. Было бы интересно. И еще — хотелось бы возможность отключить показ средней оценки, пока не поставил свою. Реально «мнение толпы» сбивает.

2.8 Лингвистический процессор

Не понравилось. Материалы не подготовлены — слайдов нет, на проекторе крутили технический PDF из Ворда, с очень невнятными внутренними кодами словоформ — смысл которых, с апломбом жреца доводил до публики докладчик. Внешний вид докладчика (http://linguist.nm.ru/) (особенно одежда) был за гранью добра и зла — несмотря на общий неформализм IT-отрасли, какие-то границы должны быть. Доклад затянут - информации там максимум на блиц-формат, остальное время занимали странные шутки (а-ля «хохлохаризма») и прочий оффтопик. Суть алгоритмов практически не разьяснена, только упоминания, что все это «запатентовано». Получил только раздражение. Впрочем, в зале слышал часто смех, возможно это исключительно мое субъективное восприятие.

2.9 Исправление опечаток в Яндексе

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

Алгоритм состоял из нескольких эвристик, типа определения кодировки/транслита, и дальше, насколько я понял, типичной дерандомизации вероятностного алгоритма.

Т.е. опираясь на аксиому, что правильные слова встречаются в контенте чаще, и имея статистику употребления одно- и многословных сочетаний (собирают из индексов) вычисляются условные вероятности употребления близких словосочетаний в запросе — что именно имел в виду пользователь, при гипотезе, что вероятностное распределение слов в его запросах, даже если он абсолютно неграмотный, совпадает с таковым распределением в контенте.

Алгоритм конечно работает, приведенный для расшифровки пример «скчать кодык игре» я лично дешифровал (и ошибся) как «скачать кодак игра», оказалось (и так разобрал алгоритм) — «скачать коды к игре» (ну да, я не игрок).

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

А мысль у меня возникла сразу такая — вместо того, чтобы использовать дерандомизацию вероятностного алгоритма, вычисляя условные вероятности сложных комбинаций, просто использовать вероятностный алгоритм (возможно с аппаратным датчиком случайных чисел). Ну типа если вероятность «скучать» ≈80%, а вероятность «скачать» ≈20% — тупо взять случайное число равномерного [0;1] интервала и выбрать первый вариант, если будет меньше 0.8. И все — сложность одной итерации будет линейная, для улучшения работы алгоритм можно будет гонять в цикле пока идет (параллельно) поиск, и отобрать наиболее часто встреченные варианты. Единственный минус — пользователям иногда будут выпадать маловероятные подсказки, но иногда и они будут правильные, а когда нет — они просто доставят людям фана, типа как «мультиканальный → мультик анальный». После презентации сообщил автору эту немудреную мысль, может пригодится, если ее поняли.

Еще один эвристический момент алгоритма — используют для анализа последовательность запросов пользователя, считая, что пользователь постепенно исправляет запрос, выбирая наиболее правильный. Тут видится мне возможность для атаки: т.е. куча запущенных ботов могут эмулировать пользовательские сессии, меняя корректные запросы на некорректные, и сбивая статистику. Да и без ботов, с падением грамотности населения — интернет протянут в глухие регионы, в РуНет пойдут пользователи из южных респубки СССР, скажем забывшие русский язык — такая ситуация может случится. Ну впрочем Гугл уже это проходил, когда (несмотря на то, что obscene-лексика блокируется), он долгое время рекомендовал по поводу и без «Может вы имели в виду gjhyj?».

Ну и еще риторически-моралистичное замечание — наличие такого сервиса полностью расслабляет пользователя, атрофируются последние стимулы писать грамотно хотя бы запросы — так что вебдванольный контент он тоже не сможет писать грамотно. А зря. Пусть бы мир (хотя бы виртуально-контентный), где живут продавцы и покупатели «уютных катеджей» (пример из доклада: Продажа катеджей, уютный катедж… (http://kotage.ru/)) просто не пересекался бы с моим…

2.10 Мастер-класс «Опыт быстрого масштабирования LAMP систем»

Автор (http://ymik.livejournal.com/) высказал с одной стороны достаточно много банальных вещей, с другой — имхо, немало очень спорных:

  • «Думать надо максимум на год вперед».
  • «Отказ от декларативных SQL SELECTов с JOIN в пользу хранимых процедур»
  • сомнительная кластеризация (поделить пользователей по БД в зависимости от первого символа в логине), после чего держать соединения со всеми этими БД.

Но так как реально с этой областью (масштабные LAMP) я не сталкивался, допускаю, что именно я неправ во всем. Автор же консультант («Ему виднее, он же китовед» ©Futurama). По крайней мере, он единственный из докладчиков, которых я слушал, употребил аббревиатуру «REST (http://en.wikipedia.org/wiki/REST)» (я ждал, что это будет в майнстриме обсуждений).

Комментариев нет: