воскресенье, 27 февраля 2011 г.

Вассерман автоматизирован! Шокирующие подробности!

16 февраля 2011 года компьютер компании IBM впервые победил человеков в игре Jeopardy (аналог Своя игра).



Webplanet о событии: Люди проиграли машине в Jeopardy!

Компьютерра о событии (в основном, перевод Википедии): Суперкомпьютер IBM Watson: элементарно, Ватсон

Анатолий Левенчук о событии:
Подробности матча IBM Watson в Jeopardy!
Второй день матча IBM Watson
Третий день матча IBM Watson -- и он официально стал лучшим отвечайкой мира

Сайт проекта: IBM Watson

О том, как все устроено и работает:
IBM Watson Research Team Answers Your Questions
Apache Innovation Bolsters IBM's "Smartest Machine on Earth" in First-ever Man vs. Machine Competition on Jeopardy! Quiz Show

Инженеру всегда интересно узнать, как оно устроено :) Итак, что же там внутри скрыто за гламурной планетой?
  • 10 рэков с 90+ серверами IBM Power 750 (Linux);
  • суммарно 16 терабайт RAM;
  • суммарно 4 терабайт HDD;
  • 2,880 ядер ЦП (80 teraflops);
  • 200 млн страниц текста преобразованы в 500Гб структурированной информации, с которой работают 6 млн логических правил Prolog(?) при ответе на каждый вопрос;
  • время ответа менее 5 секунд;
  • без подключения к Интернет;
  • в основном на Java, значительные части на C++ и Prolog;
  • все интегрировано с помощью Apache UIMA -- open source проект платформы для анализа слабо структурированной информации вроде текстов (отдан в open source самой IBM в 2006 году).

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

Проект стартовал в 2007 году (5 лет), команда из 15 человек в начале проекта и более 30 в конце, стандартное железо IBM, как утверждают, на миллион долларов.

От себя лично
...Несколько лет назад, когда я был молодой, глупый, голодный и злой (и изрядно напуганный бюрократической процедурой приема на работу в МГТУ, затянувшейся в моем случае на пол года), забрел как-то в Институт системного программирования РАН с похожей задумкой, только применительно к анализу исходного кода больших программных систем:
  • поднимаем исходный код системы в виде AST деревьев в память кластера;
  • параллельно анализируем его большим количеством агентов-анализаторов;
  • закономерности, найденные одними агентами могут быть эвристиками, направляющими и ускоряющими поиск других агентов;
  • в результате процесса анализатор понимает, из каких механизмов состоит анализируемая система и какую роль они играют в ее работе.

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

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

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

В общем, первое свиданье закончилось полным провалом. С тех пор так и живем... порознь :) Каких-то других российских организаций, более-менее серьезно занимающихся формальными методами в разработке ПО, я в природе не встречал. По-тихоньку копаем в эту сторону со студентами. Model-driven development, domain-specific languages, формальные методы, Semantic Web, агенты. На энтузиазме. За голый интерес.

А ведь при должной поддержке мог бы выйти наш ответ Чемберлену: IBM выиграла бы Jeopardy, а Россия разорила бы мировой рынок ПО :) Ведь формальные тексты программ анализировать попроще, да и знаний можно вытащить побольше.

Вообще, интересно, кто бы мне дал в России 1 млн долл. на железо и еще 6,4 млн долл. на зарплаты 30 высококлассным спецам в течение 5 лет? В принципе, хоть кто-то в России готов вложить 6 млн долл. в такой проект? С учетом того, что суперкомпьютеров-то по указу Президента накупили, а загрузить их нечем: нету в стране таких задач, не нужны никому ни моделирование, ни анализ информации. Наверное, когда-нибудь российские олигархи начнут интересоваться не только крутыми тачками и уеб-сайтами, но и технологиями разработки ПО... дожить бы.

Хотя... может, оно и к лучшему, что ничего не получилось! А то напали бы на нас оказавшиеся в мгновенье ока безработными орды китайских, индийских и американских программистов... да и нашим российским php+mysql, когда они собираются голодной толпой, лучше на пути не попадаться.

Ну и ладно!
Не очень то и хотелось!
У меня теперь свое маленькое счастье: небольшая группа толковых студентов.
И вообще, есть новая задумка: Организатор Всего или Матрица :)

понедельник, 21 февраля 2011 г.

На русском -- JADE Programming For Beginners

Несколько лет поколения студентов изучали агентную платформу Jade. И вот в недрах Интернета обнаружен неофициальный community перевод одного из руководств! А именно, JADE Programming For Beginners версии 3.6.

Возрадуемся же, братия! И да поможем друг другу с другими руководствами по JADE :) И да обновим же это руководство до версии 4.0.1! Ибо все в наших руках. И агенты, и Semantic Web.