GotAI.NET

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

 

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

 Все темы | Новая тема Стр.4 (15)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
daner
Сообщений: 4593
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 12:04
Цитата:
Автор: victorst
...с целью добавления в нее некоторых механизмов..., что ... не может быть решено на уровне приложений в рамках обычной ОС ... это ... должно позволить писать приложения с элементами ИИ...

ЧТО ЭТО ЗА ИЗМЕНЕНИЯ?????????????????????????????????????
если это секрет, то так и напишите "СЕКРЕТ"
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 12:56
Цитата:
Автор: daner
ЧТО ЭТО ЗА ИЗМЕНЕНИЯ?????????????????????????????????????
если это секрет, то так и напишите "СЕКРЕТ"
Какие могут быть секреты под BSD лицензией? Я кстати уже писал в этой теме ближе к началу. Мне не трудно повторить.
1. Т.к. Один или малое число процессоров делятся между несколькими приложениями, то в ОС есть механизм разделения времени между процессами и тредами внутри каждого процесса. Этот механизм не расcчитан на огромное количество тредов и переключение между тредами довольно длительная процедура. И хранимые данные каждого треда для этого переключения также занимают немало места в памяти. Количество одновременно находящихся в памяти тредов обычно ограничено несколькими десятками тысяч. Циклический проход каждой клетки в приложениях искусственной жизни - немного другое. Я бы хотел чтобы менеджировалось очень большое количество микроагентов. Скорее всего это должны быть мелкие части приложений наподобие тредов внутри приложений, но только более быстро обрабатываемые ОС и т.д. (см выше в этом посте). При этом такое управление с пом. ОС должно быть более высокоуровневым чем управление тредами. И постараться чтобы такое управление микроагентами работало в реальном времени, если такое смогу реализовать.
2. Возможно, что придется прямо на секторах HDD делать онтологическое хранилище в отдельном разделе диска.
3. Организация совместной работы нескольких компьютеров прозрачно для приложений ИИ. Т.е. соединение и управление кластероподобной системой компьютеров. Как известно, есть разные типы кластеров -ориентированные на надежность, на скорость путем распараллеливания и гибридные. Я бы хотел увязать возможности такой сети средствами ОС с потребностями ИИ приложений того вида, о которых писал-микроагентных.
Если какие-то из этих механизмов ОС будут реализованы, я непременно опубликую несколько демонстрационных приложений, например, по микроагентной обработке изображений, 3D сцен и т.д. Возможно, что простые операции по первичной обработке будут делать традиционные алгоритмы типа OpenCV.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 13:39
Цитата:
Автор: victorst

ОС есть механизм разделения времени между процессами и тредами внутри каждого процесса.

кроме этого есть еще фиберы - сопрограммы внутри треда.
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 14:55
Цитата:
Автор: victorst
1. Т.к. Один или малое число процессоров делятся между несколькими приложениями, то в ОС есть механизм разделения времени между процессами и тредами внутри каждого процесса. Этот механизм не расcчитан на огромное количество тредов и переключение между тредами довольно длительная процедура. И хранимые данные каждого треда для этого переключения также занимают немало места в памяти. Количество одновременно находящихся в памяти тредов обычно ограничено несколькими десятками тысяч. Циклический проход каждой клетки в приложениях искусственной жизни - немного другое.

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

у вас другой подход, отличный от этих двух?
Цитата:
Автор: victorst
2. Возможно, что придется прямо на секторах HDD делать онтологическое хранилище в отдельном разделе диска.

вообще не проблема для приложения, даже драйвер писать не надо.
берём 64-битную систему, отображаем весь HDD в память и работаем как с большим массивом. ось сама будет подгружать и выгружать страницы виртуальной памяти
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 15:12
Цитата:
Автор: unknown
берём 64-битную систему, отображаем весь HDD в память и работаем как с большим массивом. ось сама будет подгружать и выгружать страницы виртуальной памяти


Работа с диском - это потеря времени (ожидание данных, таймауты, кэширование и тп)
Проще всего и быстрее работать только с памятью и в одном потоке, но с событийной моделью. Таймер будет квантовать время, ось будет раздавать кванты агентам. Проблема появится лишь тогда, когда агент потребует вычислений больше, чем квант или же сам процесс раздачи квантов (для миллиарда агентов) будет забирать больше чем нужно агенту в пределах кванта. Вот тогда весь реал-тайм смоется в унитаз.
Вытесняющая многозадачность реализованная процессором добавляет лишь нелинейность к распределению времени. Можно попытаться перекинуться на другую архитектуру процессора , где можно забрать целое ядро под свой тред. Думаю на интеле тоже можно такое реализовать.
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 15:32
я не понимаю потребности в жёстком реал-тайме, честном распределении квантов между агентами (как здесь уже кто-то отмечал, агенты - это всего лишь ЯП и между ними так или иначе будет искусственная синхронизация, выбрасывающая в никуда кванты времени)

не понимаю желания забрать процессор в монопольный режим и выжать из него всё до такта. ну подумаешь, ОСь заберёт 100 мкс из каждого кванта. эти такты можно с лихвой вернуть, установив другой процессор или подразогнав имеющийся на каких-то 200 MHz
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 27 мар 12 17:18
шейдеры
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 2:32
Цитата:
Автор: unknown

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


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


Цитата:
Автор: unknown
не понимаю желания забрать процессор в монопольный режим и выжать из него всё до такта. ну подумаешь, ОСь заберёт 100 мкс из каждого кванта. эти такты можно с лихвой вернуть, установив другой процессор или подразогнав имеющийся на каких-то 200 MHz


Ну конечно. Три года ваша система обучалась на одной частоте, а тут вы вдруг решили добавить 200МГц, и кому теперь нужны эти три года обучения? (А человек обучается всю жизнь)
Интеллект должен быть адекватен среде, структурно и динамически. И в процессе обучения, вносить внешние (от третьих лиц) рассогласования в структуру или динамику, недопустимо. Это касается динамических систем с адаптивной структурой. Если ваша система претендует на этот статус, то правила нужно выполнять.
Над всякими прочими программками с жёстким алгоритмом/структурой можете издеваться как угодно.
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 2:34
Цитата:
Автор: NO.

шейдеры


хорошая мысль пользоваться графическими процессорами и памятью.
как в CUDA, возможно даже шейдерами
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 9:20
Цитата:
Автор: shuklin
кроме этого есть еще фиберы - сопрограммы внутри треда.
Я не стал про них писать потому что подмена треда внутри приложения не дает нужного мне эффекта.
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 9:53
Цитата:
Автор: unknown
если почитать матчасть, то изобретено два вида многозадачности:
1. вытесняющая, когда задача прерывается таймером, сохраняется контекст и восстанавливается другая задача - что для вас неудобно из-за неуклюжести переключения
2. кооперативная, когда тред ровно один, а агенты честно передают управление друг другу.
у вас другой подход, отличный от этих двух?
Я раньше как-то писал, но повторю для тех, кто этого не читал.
Я приблизительно с 2000 по 2005 год разрабатывал микроагентную систему на основе коперативной многозадачности. Меня не устроил вариант, когда в одном общем треде агенты - объекты выполняют в очередном цикле обращения к ним метод. Методы у разных агентов могут иметь различную длительность выполнения ввиду разного программного кода и если они содержат циклы, то положение еще более усугубляется.
Для устранения этого недостатка я изучил виртуальные машины .NET и Java. К моему ужасу когда я трассировал MSIL отладчиком на уровне машинных кодов, увидел, что Managed код требует слишком много накладных расходов. Например, чтобы выполнить элементарное сложение двух чисел, процессор выполнял более 200 машинных команд. на основании этого анализа а также анализа других виртуальных машин (Metatrader MT3, 4) и др. Я спроектировал и запрограммировал на 32-битном ассемблере 64-битную виртуальную псевдопараллельную машину. Кроме того, вместе с моим сыном написал IDE, компилятор и отладчик. В основе системы были небольшие виртуальные одностековые процессоры (ВП) имеющие менее 50 команд, Каждая виртуальная команда выполнялась не более чем за 20 машинных команд. При переводе на 64 битный реальный ассемблер это значение можно еще значительно уменьшить. Каждый ВП имел свой счетчик виртуальных команд, механизмы маскируемых и немаскируемых прерываний, приоритеты циклического выполнения, средства межагентного взаимодействия и т.д. Все это умещалось в небольшую горстку памяти, отведенную для каждого ВП. С целью дальнейшего повышения быстродействия я перед запуском такой виртуальной машины заранее статически выделял непрерывный кусок памяти чтобы потом не тормозить при запросе ОС на выделение из общей кучи памяти.
В итоге удалось сделать систему, в которой практически не использовались запросы к ОС кроме операций ввода-вывода. В этом случае агент, размещенный в ВП переводился в другой поток в очередь ввода-вывода.
На языке виртуального ассемблера я написал онтологическое хранилище на внешнем носителе. Хранилище разделялось на 4 части:
1. дефолтную с базовыми классами общего назначения,
2. дефолтную со связями между классами,
3. прикладную дефолтную часть,
4. пользовательскую.
Несмотря на то, что такая система мне очень понравилась в работе, я не смог в то время организовать мультимикроагентную работу ввиду отсутствия некоторых идей. И кроме того, Такая кооперативная мультизадачность имела один принципиальный недостаток- все равно относительно низкое быстродействие ввиду программной интерпретации каждой команды каждого виртуального процессора. Вот если бы можно было на уровне ОС поравномернее делить процессорное время между микроагентами, работающими не с пом. виртуальных машинных команд, а с пом. команд реального процессора. Тогда скорость работы можно повысить как минимум на порядок. Конечно, отсюда нужно отнять время, требуемое переход в режим ядра ОС и обратно.
[Ответ][Цитата]
Victor G. Tsaregorodtsev
Сообщений: 3187
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 10:09
Цитата:
Автор: covax
Задача - раздать равные кванты агентам и добиться синхронизма со средой. В противном случае в процесс обучения (восприятия) вносится случайность, отсюда, теряется контроль, система становится мало-адекватной воздействиям среды. Вы думаете, что исправляете алгоритм обучения, а на самом деле, боретесь с внутренней динамической рассогласованностью системы у которой "грязный" реалтайм. И ваш эксперимент вылетает в трубу.

Может, при правильных алгоритмах не будет проблемы асинхронности и проблемы их кривого распараллеливания?

Я, например, пользуюсь асинхронным способом распараллеливания алгоритма стохастической аппроксимации (Роббинсы-Монро там всякие), т.е. занимаемые потоками доли времени не контролирую и не уравниваю - и особых проблем не вижу. И теоретическое доказательство вроде бы довольно приемлемое получается. Гляжу на буржуинов - они тут постепенно идут тем же путём (хотя, последняя из статей на эту тему, с декабрьской конференции в США, так и не дошла до разрешённого мной уровня безобразий - остановилась на более жестких условиях-ограничениях).
Напоминаю - алгоритм стохастической аппроксимации, т.е. он изначально использует неточную оценку градиента (направления изменения параметров модели). Но увеличение неточности оценки (из-за списифиського способа распараллеливания) к проблемам не приводит (вычислительные эксперименты у меня были массовыми, в т.ч. и при 12 потоках на 2ядерном проце, т.е. когда ОС 5/6 потоков держала в спячке, и когда спящий поток просыпался - устаревшие данные из его контекста не оказывали видимого негативного влияния на модель).

В общем, в проблеме "шашечки или ехать" Вы с victorst ещё не проверили практическую работоспособность или неработоспособность "кривых" реализаций - а уже вводите пока ниоткуда не следуемые и якобы теоретические ограничения.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 10:55
Цитата:
Автор: victorst

Я раньше как-то писал, но повторю для тех, кто этого не читал.

Наверное я пропустил, а зачем ЭТО ВСЕ? Какая в этом польза? Ну хотябы Вам самим какая?
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 11:04
Цитата:
Автор: Victor G. Tsaregorodtsev
В общем, в проблеме "шашечки или ехать" Вы с victorst ещё не проверили практическую работоспособность или неработоспособность "кривых" реализаций - а уже вводите пока ниоткуда не следуемые и якобы теоретические ограничения.


Ограничения не касаются "статики", с которой работаете Вы, но для "динамики" эти "кривые реализации" выходят гигантской избыточностью структуры, которая растёт куда не надо, пытаясь адаптироваться к "качке". Теория другая, поэтому и теоретические ограничения другие. А вашу позицию я прекрасно понимаю и разделяю, отчасти.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 11:06
Аппаратное переключение контекстов довольно долгая операция. Сама по себе, плюс слетает вся суперскалярность, предсказание переходов и прочая оптимизация, процессор будет работать как 486 только на более высокой частоте. Может тысяча агентов будут ворочаться, дальше вряд ли. Вручную написанная параллельность будет работать лучше чем если отдать это системе. Разбивайте циклы, следите за временем, ставьте семафоры если нужна синхронизация, с умом.
[Ответ][Цитата]
 Стр.4 (15)1  2  3  [4]  5  6  7  8  ...  15<< < Пред. | След. > >>