GotAI.NET

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

 

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

 Все темы | Новая тема Стр.5 (15)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 12:24
Цитата:
Автор: shuklin
Наверное я пропустил, а зачем ЭТО ВСЕ? Какая в этом польза? Ну хотябы Вам самим какая?
Чтобы был мир во всем мире на все времена. Шутю. О какой пользе можно спрашивать у маньяков ИИ? Или вы уже к этой породе не относитесь? В то время моя фирма меня обеспечивала и у меня было время заниматься ИИ почти круглосуточно. А сейчас времена изменились. Приходится батрачить. И времени на этот чемодан без ручки остается очень мало. Но кое-какие новые идеи появились. Я писал на форумах в теме "Мегатронная сеть". Микроагенты тут как раз и нужны.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 12:59
Цитата:
Автор: victorst

Или вы уже к этой породе не относитесь?


Я писал что забил на программинг в направлении ИИ. Да, не отношусь. Но привычка к ИИ-тролированию осталась ))

Цитата:
Автор: victorst

О какой пользе можно спрашивать у маньяков ИИ?

ОК, давайте сузим этот вопрос в пределах аматроского ИИ. Полезно для самого себя, когда ответ на этот вопрос отработан до автоматизма
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 13:01
Цитата:
Автор: NO.

Разбивайте циклы, следите за временем, ставьте семафоры если нужна синхронизация, с умом.

Что делать если нужен миллиард семафоров? И еще хуже, если это облако?
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 28 мар 12 13:36
гуглить
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 29 мар 12 16:53
Цитата:
Автор: victorst

Для устранения этого недостатка я изучил виртуальные машины .NET и Java. К моему ужасу когда я трассировал MSIL отладчиком на уровне машинных кодов, увидел, что Managed код требует слишком много накладных расходов. Например, чтобы выполнить элементарное сложение двух чисел, процессор выполнял более 200 машинных команд.

это какой был год... теперь .NET компилирует MSIL в прекрасно оптимизированный код, на уровне C++

вот пример сложения
http://imageshack.us/photo/my-images/571/image2vb.png/


Цитата:
Автор: victorst

Я спроектировал и запрограммировал на 32-битном ассемблере 64-битную виртуальную псевдопараллельную машину. Кроме того, вместе с моим сыном написал IDE, компилятор и отладчик.

хорошая лабораторка получилась. я как-то начал писать файловый коммандер. естественно, оптимально и с основ. начал с контейнеров. долго их оптимизировал и вылизывал. а надо было взять STL и не париться. пока оптимизировал мелочи, весь задор в свисток ушёл

Цитата:
Автор: victorst

В основе системы были небольшие виртуальные одностековые процессоры (ВП) имеющие менее 50 команд, Каждая виртуальная команда выполнялась не более чем за 20 машинных команд. При переводе на 64 битный реальный ассемблер это значение можно еще значительно уменьшить. Каждый ВП имел свой счетчик виртуальных команд, механизмы маскируемых и немаскируемых прерываний, приоритеты циклического выполнения, средства межагентного взаимодействия и т.д. Все это умещалось в небольшую горстку памяти, отведенную для каждого ВП.
...
И кроме того, Такая кооперативная мультизадачность имела один принципиальный недостаток- все равно относительно низкое быстродействие ввиду программной интерпретации каждой команды каждого виртуального процессора.

у вас машина-интерпретатор, вы не взяли барьер динамической компиляции. сейчас у крутых парней принято, чтобы не забивать себе голову ассемблерной оптимизацией, брать динамические языки - lisp, haskel, python и т.п. и, создавая алгоритмы на лету, пропускать их через jit, встроенный в runtime языка программирования. получается отличная скорость и легкая перестраиваемость алгоритмов.
к слову, я тоже тяготею к ассемблеру. смотрю на эту молодёжь и белая зависть, как хорошо без лишних забот - берёшь и используешь готовое, а не переписываешь ось, оптимизируя каждый байт

Цитата:
Автор: victorst

С целью дальнейшего повышения быстродействия я перед запуском такой виртуальной машины заранее статически выделял непрерывный кусок памяти чтобы потом не тормозить при запросе ОС на выделение из общей кучи памяти.

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

Цитата:
Автор: shuklin

Что делать если нужен миллиард семафоров? И еще хуже, если это облако?

ясень пень, пересматривать подход. ведь наверняка можно переписать без миллиона семафоров и получить другой алгоритм, но с тем же соотношением вход/выход, как у изначального
[Ответ][Цитата]
unknown
Сообщений: 109
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 29 мар 12 16:57
Цитата:
Автор: covax

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

по аналогии с живым организмом... поел, процессы замедлились и человек вообще ни на что не способен, всё обучение в трубу?

Цитата:
Автор: covax

Ну конечно. Три года ваша система обучалась на одной частоте, а тут вы вдруг решили добавить 200МГц, и кому теперь нужны эти три года обучения?


и зачем такой ИИ, который не масштабируется. который нельзя скопировать в более мощный носитель, потому что перестанет работать. мне ваш подход не нравится
[Ответ][Цитата]
victorst
Сообщений: 821
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 0:12
Цитата:
Автор: unknown
это какой был год... теперь .NET компилирует MSIL в прекрасно оптимизированный код, на уровне C++
вот пример сложения
Да, в те лохматые года статической компиляции MSIL насколько мне известно не было и находилась в зародыше динамическая компиляция. Немного лучше дело обстояло в Java VM. А теперь разберемся в существе проблемы. Я поставил задачу разработки системы, где бы каждый оператор каждого микроагента выполнялся последовательно со всеми другими микроагентами в общем цикле образуя псевдопараллельную работу системы. Это- предельный случай псевдопараллельности. Компилятор - статический или динамический хорош там и тогда, где имеется довольно длинная последовательная цепочка операторов, желательно без ветвлений. Дело даже не в ветвлениях, а в параллельности работы с другими агентами. Надеюсь вы поняли суть проблемы? А теперь покажите мне хоть один динамический параллельный компилятор. В вырожденном случае с компиляцией всего одного оператора виртуальной машины компилятор превращается в интерпретатор.
Цитата:
Автор: unknown
а надо было взять STL и не париться. пока оптимизировал мелочи, весь задор в свисток ушёл
Я тоже как-то сравнил самописный key-value контейнер с применением AVL на ANSI C и STL. Самописный оказался приятнее, хотя с STL проще. Это кому как хочется с ума сходить.
Цитата:
Автор: unknown
у вас машина-интерпретатор, вы не взяли барьер динамической компиляции.
Я написал выше, что это не мой барьер. Может быть я ошибаюсь и вы что-то посоветуете, т.к. эта проблема мною не разрешена до сих пор наиболее хорошим способом.
Цитата:
Автор: unknown
сейчас у крутых парней принято, чтобы не забивать себе голову ассемблерной оптимизацией, брать динамические языки - lisp, haskel, python и т.п. и, создавая алгоритмы на лету, пропускать их через jit, встроенный в runtime языка программирования.
Мне давно известна их логика. Если машина слишком медленно выполняет Java код, то нужно взять машину побыстрее. Если мало памяти - расширить ее. У этого подхода есть своя правда, но она не для меня. Я отвергаю слишком широкие автомобили с диванчиком на месте водителя. Как то я копался в потрохах G2. Есть такая система на Лиспе. Типа она реалтайм на компиляторе SBCL. Ой. Вот и все. А она управляет спутниками и атомными реакторами.
Цитата:
Автор: unknown
к слову, я тоже тяготею к ассемблеру. смотрю на эту молодёжь и белая зависть, как хорошо без лишних забот - берёшь и используешь готовое, а не переписываешь ось, оптимизируя каждый байт
Не скажите. История развивается по спирали. Клепать из готовых кубиков - у такого подхода есть свой предел и недостатки. Как и у других подходов. Я вовсе не противник кубиков.
Цитата:
Автор: unknown
ага, знакомо. только сейчас и выделение памяти в ОСи уже достаточно быстрое, чтобы на нём экономить
Мне слабо верится, что несколько десятков миллионов выделений и утилизаций памяти в секунду ОС переварит без ущерба всему другому.
[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 6:06
Цитата:
Автор: unknown
по аналогии с живым организмом... поел, процессы замедлились и человек вообще ни на что не способен, всё обучение в трубу?


Человек, когда поел - слабообучаем. А слабообучаем, именно для того, чтобы "обучение не в трубу" в то время, когда процессы замедлились. Вот процессы восстановятся, система войдёт в номинал (среднестатистически активный режим работы), тогда можно и обучаться, анализировать и решать задачи.


Цитата:
Автор: unknown
и зачем такой ИИ, который не масштабируется. который нельзя скопировать в более мощный носитель, потому что перестанет работать. мне ваш подход не нравится


Нравится, не нравится. Тут ничего не поделаешь. Это реалии жизни.

Носитель не может быть мощным или не мощным. Если его общая динамика другая, то нет смысла туда помещать иск.разум тк он будет не адекватен к среде. Весь опыт его накоплен с одной динамикой, а работать он будет в другой динамике. Очень странные у вас рассуждения. Это всё равно, что спектр частот слышимого вами звука увеличить в два раза (к примеру). Вы вообще звуки перестанете различать, тк ваш мозг адаптирован к другой полосе частот.
[Ответ][Цитата]
Анатоль
Сообщений: 1964
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 6:40
Цитата:
Автор: covax
Это всё равно, что спектр частот слышимого вами звука увеличить в два раза (к примеру). Вы вообще звуки перестанете различать, тк ваш мозг адаптирован к другой полосе частот.

Спектр речи 100гц-8000гц (в телефоне 300-3000).
Увеличим в два раза 200гц-16000гц.
Вполне услышим.
Но что более интересно - даже распознаем.
Будет звучать пискляво но распознаваемо.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 6:55
Цитата:
Автор: unknown


в прекрасно оптимизированный код, на уровне C++



Меня в первую очередь настораживает слово "отладчик". Отладка обычно запускается после компиляции Debug версии, при этом в компиляторе включается "анти-оптимизатор". Для самообразования полезно перешаманить настройки среды и запустить отладку с оптимизацией Release. Отлаживаться почти невозможно В случае оптимизации псевдокод:

а = 1:
б = 2:
с = а + б:
принт(с):

превращается в:

пуш(3);
колл(принт);

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

Цитата:
Автор: unknown

хорошая лабораторка получилась.


Да, лабораторки полезны Мне в этом контексте вспоминается один случай, когда я страдал БПФ-ом. Нашел библиотеку для реализации псевдо-флоат типа данных на основе типа инт и целых операций. Ну типа целая арифметика должна быть быстрее плавающей.
С кучей "правильных" приседаний написал на этом деле собственный БПФ. И довольный решил померятся, на сколько я уделал самую тупую реализацию в цикле фор() с применением стандартного типа флоат. Ха, "уделал", моя версия оказалась в 10 раз хуже чем со стандартным флоат. Полез смотреть асм - ну там все как и ожидалось, целая арифметика против флоат. Вот только компилятор пользуясь типом флоат рассовал флоат операции между всякими служебными инструкциями, похоже на то, что в результате FPU удавалось работать параллельно основному CPU.

Цитата:
Автор: unknown

ага, знакомо. только сейчас и выделение памяти в ОСи уже достаточно быстрое, чтобы на нём экономить ... ясень пень, пересматривать подход. ведь наверняка можно переписать без миллиона семафоров и получить другой алгоритм, но с тем же соотношением вход/выход, как у изначального

Все надо проверять. Здесь мне вспоминается другой случай. Работал с памятью. Нужен был нестандарный подход. Решил не заморачиваться на оптимизацию, а сделать абы как, по быстрому. Никакой оптимизацией даже не угадывалось. Т.е. совершенно точно что можно сделать лучше. Ну решил узнать на сколько я проиграл хотябы в стандартном сценарии по сравнению с ОСью. Сравнил с memory mapped file. Во время эксперимента ни одного сомнения в том, что моя реализация проиграет в разы ОС-евой у меня небыло, однако оказалось наоборот! Та че там в разы, memory mapped file продул на порядки. Гораздо позже на одном англоязычном форуме один умный дядька объяснил мне в чем там дело. Все так и должно быть.

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

Мне слабо верится, что несколько десятков миллионов выделений и утилизаций памяти в секунду ОС переварит без ущерба всему другому.

Для динамического выделения многих миллионов мелких участков памяти - смело берите .NET, По этому показателю чистые ASM или C++ далеко отстанут от managed фреймворков.

Хотя и здесь возможны варианты ... все дело в мелких детялях.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 8:22
Насчет оптимизации. Когда пишу самый трудоемкий участок как раз и представляю что должен делать процессор и как написать чтобы при всех оптимизациях получилось именно это. Так что отлаживается нормально.
Недавно попадалось про расстановку ферзей. Сначала делали тупой перебор, потом алгоритм сменили на "выбрать самый вредного и сделать как угодно лишь бы не так". Раньше расставляли как обычно 8 ферзей, теперь расставляют сотни тысяч. Так что главное алгоритм. На втором месте мемоизация, всё что можно нужно сохранять и потом брать готовое. На третьем месте важно чтобы данные умещались в кэше процессора. Остальное уже мелочи, хотя их много, разных и интересных.

На C# у меня был массив [256], я в него обращался указателем byte, да ещё в формуле после вычисления стоит по модулю 256. И всё равно он проверял не выходит ли этот указатель за границы. У меня сложилось впечатление, что C# для идиотов.
[Ответ][Цитата]
Вольфрамовый клaпaн
Сообщений: 13070
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 8:58
позвольте быть Капитаном Очевидность: всякая задача имеет некоторую объективную сложность... конечно, можно придумать специально неоптимальный алгоритм, но это искусство... для инженерных задач мы имеем в качестве базового алгоритма именно перебор элементов в коллекциях, сравнения и ветвление потоков...
поэтому, есть ровно два варианта: уменьшать процессорное время за счет большего использования памяти и кэширования, либо уменьшать использование памяти, за счет использования процессора...
если речь идет о качественном изменении performance нужно просто менять среду в целом, брать более мощный проц с большей памятью...
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 9:53
Цитата:
Автор: NO.

Насчет оптимизации. Когда пишу самый трудоемкий участок как раз и представляю что должен делать процессор и как написать чтобы при всех оптимизациях получилось именно это. Так что отлаживается нормально.


Речь идет про отладку Release конфигурации билда. Если это MS C/C++ неплохо в ручную проверить ключики командной строки у CL.exe чтобы была именно та оптимизация, которую надо выжать из компилятора. Сделайте эту лабу для себя - много нового узнаете. Нужно в Debug конфигурацию прописать ключи для оптимизации из конфигурации Release или запустить на отладку Release. Убедитесь чтоб была включена глобальная оптимизация. На скорость или на объем исполняемого кода - имхо не важно, в отладке без АСМ сильно заметно не будет. Проект должен быть достаточно сложный с кучей частично повторяющихся участков кода.

[Ответ][Цитата]
covax
Сообщений: 1609
На: AINIX - бесплатная с открытым кодом POSIX ОС для приложений ИИ
Добавлено: 30 мар 12 10:25
Цитата:
Автор: Анатоль
Увеличим в два раза 200гц-16000гц.
Вполне услышим.


Не всё так просто. Ещё и скорость речи увеличится в два раза. Динамика-то вся у нас поплыла, не только частОты фонем. И длинна световой волны будет анализироваться иначе. И ощущение времени в целом изменится.

Плохо, что я сразу не расписал все последствия.
[Ответ][Цитата]
 Стр.5 (15)1  2  3  4  [5]  6  7  8  9  ...  15<< < Пред. | След. > >>