GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.6 (15)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 10:33
Цитата:
Автор: covax



Не всё так просто.

Да, все гораздо интереснее У Вас есть вертушка для винила? Попробуйте пальцем ускорить или замедлить вращение пластинки.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 10:51
про отношение скорости и память вот картинка с машинами Тьюринга, прямо гипербола и получается
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 11:15
Цитата:
Автор: covax
Ещё и скорость речи увеличится в два раза.


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

Но можно спектр сместить не изменяя скорости речи.
Или даже сместить спектр в сторону больших частот, а скорость речи уменьшить.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 11:37
Цитата:
Автор: Анатоль

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

Когда делал интерфейс для .NET для драйвера устройства RealCT то у них в вокодере была фишка: можно менять скорость речи, на слух спектр почти не меняется. Наверное через БПФ сделали.
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 13:05
Цитата:
Автор: shuklin
можно менять скорость речи, на слух спектр почти не меняется. Наверное через БПФ сделали.

Это можно делать и в частотной области (через БПФ, например) и во временной (встраивая в сигнал или вырезая кусочки длиной периода основного тона).
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 08 апр 12 9:03
Цитата:
Автор: victorst

Надеюсь вы поняли суть проблемы? А теперь покажите мне хоть один динамический параллельный компилятор. В вырожденном случае с компиляцией всего одного оператора виртуальной машины компилятор превращается в интерпретатор.

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

если они не взаимодействуют, очевидно нужно выяснить, сколько итераций система может выполнить за время эксперимента, поделить на N - кол-во агентов и дать каждому свой кусок времени

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

в худшем случае (тут не очень понятна его применимость - я не знаю алгоримтов без чёткой синхронизации между агентами), когда каждый агент должет работать по 1 мс, выставлять куда-то результат а другие агенты должны сразу этот результат видеть, реализуется напихиванием в алгоритм агента некоторой функции yield(), которая быстро проверяет, не прошло ли 1 мс, выделенные потоку

то есть если алгоритм агента выглядит как
for (int i = 0; i < 1000; i++) { sum += i; }
мы преобразуем его в
for (int i = 0; i < 1000; i++) { sum += i; this->yield(); }
и пускаем через jit. функия yield() должна быть такой
__forceinline Agent::yield() { if (__rdtsc() >= this->agent_next_tick) real_yield(); }

всё лучше, чем тупой интерпретатор
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 08 апр 12 9:08
по поводу сложности real_yield(), могу отметить что оно недавно реализовано в .NET (c# 5.0, Visual Studio 2012) конструкцией async/await

а в javascript подобный асинхронизм давно работает в асинхронных функциях и дружит с jit
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 08 апр 12 12:18
Цитата:
Автор: unknown
реализуется напихиванием в алгоритм агента некоторой функции yield(), которая быстро проверяет, не прошло ли 1 мс, выделенные потоку


А если прошло больше 1мс? Произойдёт срыв синхронизма (равномерного распределения времени) и на агента уйдёт больше чем один квант?
Что это даёт? Зачем эта функция нужна внутри агента?
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 08 апр 12 14:49
Цитата:
Автор: covax

А если прошло больше 1мс? Произойдёт срыв синхронизма (равномерного распределения времени) и на агента уйдёт больше чем один квант?

ни о каких квантах не шла речь. инструкция процессора RDTSC считывает текущее значение со счётчика, подключенного к тактовому генератору. погрешность такого подхода может быть порядка 10-20 тактов

Цитата:
Что это даёт?

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

Цитата:
Зачем эта функция нужна внутри агента?

кооперативная многозадачность с проверкой своего времени, которая происходит через каждые несколько инструкций но занимает всего пару тактов, если время ещё не вышло. на мой взгляд, будет на порядок быстрее интерпретации, если агентам давать куски времени по 1 мс (2-4 млн. тактов). для сравнения, в современных ОСях квант времени для организации многопоточности ~ 20 мс и переключение контекста сильно медленное
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 08 апр 12 23:49
Цитата:
Автор: unknown
если системно посмотреть на задачу, выделить вход и выход (оставив посередине чёрный ящик), то всё упирается в способ взаимодействия между агентами.
Да, так. Я пока не объявлял суть того, что должны делать микроагенты и как между собой взаимодействовать.
С 2005 по 2011 годы я интенсивно работал с кодом системы основанной на продукционных правилах CLIPS. Переход к CLIPS от моей микроагентной системы был обусловлен невозможностью организовать сложное взаимодействие агентов в сочетании с удобством разработки и отладки такого взаимодействия. Я рассматривал каждое находящееся в очереди на выполнение продукционное правило в качестве некоторого эквивалента микроагента. Среда CLIPS, если не рассматривать ее ООП, содержит
1. Шаблоны фактов.
2. Шаблоны правил.
3. Экземпляры фактов.
4. Экземпляры правил.
Всем этим управляет среда, основанная на механизме RETE.
В начальном состоянии системы в нее загружаются только шаблоны фактов и правил.
Далее загружается инициирующий экземпляр факта. Система отслеживает эти экземпляры фактов и если обнаруживается шаблон правила, левая часть которого полностью удовлетворяет условию запуска на основе какого-то подмножества из всех имеющихся в среде в данный момент времени экземпляров фактов, то создается новый экземпляр правила, готового к выполнению. Этот экземпляр правила ставится в общую очередь ожидания выполнения где могут находиться другие правила. Как только очередь доходит до него, правило начинает работать. А точнее, начинает выполняться код, имеющийся в правой части правила. Если в этом коде есть оператор создания нового факта, то создается новый экземпляр какого-нибудь факта на основе шаблона факта. Либо если есть команда по уничтожению факта, он уничтожается. После выполнения правила система пересматривает свое новое состояние и если появляются факты, которым удовлетворяют шаблоны правил, она создает новое правило как описано выше. Если же у находящихся в очереди на исполнение правил из левой части правила исчезает какой-нибудь факт ввиду его уничтожения, то этот экземпляр правила удаляется из очереди и разрушается.
Система работает до того момента, пока имеется хотя бы одно правило в очереди на исполнение.
CLIPS - по сути дела однопотоковая система. Но при этом в ней не задается явно алгоритм выполнения потому что неизвестен заранее порядок выполнения правил. Можно, конечно с пом. управляющих фактов упорядочить выполнение некоторых правил, но это - частный случай. Я не описал некоторые дополнительные механизмы CLIPS, например, разрешение конфликтов при наличии правил с одинаковыми приоритетами, для чего нужен RETE и др. Но суть работы системы должна быть вам понятна из написанного мною.
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 09 апр 12 0:26
Продолжу. CLIPS несмотря на множество всего хорошего имеет массу недостатков для моих целей. Довольно долго я мирился с ними. Но все же решился вновь вернуться к своим микроагентам, дополнив их некоторыми механизмами, имеющимися в CLIPS и добавив новые.
Вот некоторые недостатки:
1. В CLIPS даже если правила работали с различными фактами, ставились в общую единственную очередь. А т.к. в правилах могли быть большие линейные участки или циклы или обращение к внешним устройствам, то вся система приостанавливала свою работу, что было недопустимо например, при управлении роботом в реальном времени. Однако там, где требовался последовательный логический вывод, последовательно выполняющиеся правила работали хорошо. Но такое бывает далеко не всегда. Очень часто казалось бы последовательная задача начинает расщепляться на несколько параллельных ветвей. И нахождение решения в одной ветви могло бы приостановить напрасную работу в остальных ветвях. Можно, конечно, сделать несколько потоков с отдельными движками CLIPS. Но их много не сделаешь и затруднено их взаимодействие.
2. CLIPS - интерпретатор с динамической типизацией. Поэтому не может работать быстро.
3. В CLIPS кривовато реализована возможность динамического создания новых шаблонов правил и фактов и другие манипуляции с ними. Т.е. отсутствует работа с метазнаниями.
4. В CLIPS реализована работа с фреймовым представлением знаний. Улучшенная - онтологическая модель в нем не поддерживается. Когда я стал ее реализовывать поверх фреймовой, система стала громоздкой и еще более медленной.
5. В CLIPS реализован только механизм прямого логического вывода.
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 09 апр 12 0:32
Цитата:
Автор: unknown
в худшем случае (тут не очень понятна его применимость - я не знаю алгоримтов без чёткой синхронизации между агентами), когда каждый агент должен работать по 1 мс, выставлять куда-то результат а другие агенты должны сразу этот результат видеть, реализуется напихиванием в алгоритм агента некоторой функции yield(), которая быстро проверяет, не прошло ли 1 мс, выделенные потоку
В самом начале я рассматривал такой подход с напихиванием в код проверок. Возможно, он и побыстрее, но менее прогнозируемый и очень труден в программировании несмотря на пользование обычными средствами разработки. Я его отверг тогда по нескольким причинам.
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 09 апр 12 0:37
Цитата:
Автор: unknown
по поводу сложности real_yield(), могу отметить что оно недавно реализовано в .NET (c# 5.0, Visual Studio 2012) конструкцией async/await
Может быть я не разобрался с этой приладой в .NET но мне кажется, что это обычный синтаксический сахар на давно имеющиеся механизмы асинхронной работы потоков. И там я не заметил никакой работы с таймером. Обычное создание, старт-стоп потоков, передача параметров и результатов между ними.
Я считаю, что эти мелкие доработки ой как далеки от настоящего параллелизма.

2unknown: ваши замечания мне очень ценны. Спасибо за внимание к моим попыткам реализации нового (старого?) микроагентного движка.
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 10 апр 12 18:30
LISP - хорошо. после вводной понял, почему именно микроагенты.
подход интересный. если какая-то "мысль" продвигается лучше, чем её конкуренты, надо дать ей больше ресурсов, а остальные замедлить
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 10 апр 12 19:58
похоже вся проблема в РЕТЕ
[Ответ][Цитата]
 Стр.6 (15)1  2  3  4  5  [6]  7  8  9  10  ...  15<< < Пред. | След. > >>