Sly32

Рейтинг
392
Регистрация
29.03.2012
Должность
Software engineer
Александр Воробьев #:
Так к 52 пристегивалась память. Если фотку глянешь в гугле там сверху (видны края крышек слотов)
Да, я все напутал, у меня был МК-61, а 52-й был с памятью
Александр Воробьев #:
У Слая реализовано, лично у меня нет знаний для оценки уровня. Да и подходы могут быть разные, на мой взгляд (как я понял) тебе важны шашечки (это я про то что когда увидел вспенил начало двухтысячных), а я смотрел там на "ехать" - мне вообще пофиг как внешне форум выглядит.
Ой ну не прибедняйся - ты вполне в состоянии оценить с твоими компетенциями. Провда  особо и нечего оценивать - публично я пока не могу дать в руки всем этот функционал, а без настройки своего ИИ-аватара - сложно понять идеи. В целом форум был задуман исключительно как аватар для отработки RAG  систем. Если вдруг из этого что-то вырастет - вряд ли он останется на сервисе в таком виде. 

Александр Воробьев #:
1987 на станции юных техников открылся кружок программирования.
У нас с тобой похожий путь в айти) Наконеч-то первый отзыв от тру-порграммера.
Зато у меня сразу был МК-54 - он мощнее) Но мечтал об МК-64 - он с памятью был. 
ArbNet #:
ы хоть для приличия названия функций немного поменял, сразу же видно подчерк ИИ.
Прочитай для начала что такео

Naming Conventions /PEP8
Чтоб не было такого ужаса как в твоем фреймворке. 

ArbNet #:
И ты это называешь нейросетью

Да, это именно нейросеть. Примитивная. Но рабочая, с обьяснением всех этапов ее тренировки и референса. Я знаю в приведенном примере и математику и  код, ты - вряд ли.
Не понимаю, что ты подразумеваешь под "реальными  нейросетями". Естественно, это учебный пример, никто не будет(кроме тебя конечно) страдать и делать все это руками.

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

Поэтому твои заявки о том что ты знаешь что можно что-то там улучшить - пустозвонство. Для этого нужно  как минимум понимать существующую архитектуру. Как ты можешь что-то оптимизировать под слабые компьютеры, когда это все - обычные матричный вычисления с квадратичной сложностью. Чем больше данных - тем больше нужно ресурсов. У меня вчера тренировка модели на 37 Мегабайт заняла больше часа и использованием MPS   на маке и я впераые услыхал, как у него вентилятор работает. Обуча, кстати на сообщениях из форума и получил интересные результаты.

Поэтому для текста сегодня - только трансформер как самая прогрессивная модель. Можешь прочитать про Mamba,  в чем ее преимущества  и почему она все еще буксует. Потом напускай на себя загадочный вид. Все о чем ты говоришь - давно уже сделано.

Но! Эта дискуссия натолкнула меня на интересные вещи. Начав вспоминать  базу, я вернулся к фреймворкам для написания нейросетей, если точнее  - Pytorch. Да, я знаю что у того же Антропик сейчас JAX в фаворе. Но первый я уже знаю, не стал тратить время на  изучение пока.

Что сделал - написал  простой интефейс, который позволяет  подготовить датасет к модели и натренировать ее. Получил интересный разультат. Локальная модель, в которую загружены сообщения от нехаоса, в тиоге начинает "понимать основы" и начинает выдавать информацию об исскуственном интеллекте, например. Это прсото удивительно. Этого нет в сообщениях нехаоса, при это. нейросеть уже строит правильные ответы! На датасете в 147Кбайт и самой модели в 37Мег! Очередной привет тем, кто заявляет что ЛЛм - обычный поиск)))

Можно проверить по его сообщениям - там такого и в помине нет!

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

И это все под твои сказочки 🤣
 

Кстати, хочу тебе сказать спасибо, Streamit оказался  классной штукой для локали - чтобы не возится с разворачивнием UI  через большие фреймворки. Я как то раньше не сталкивался
Мой путь.

Начало 80-х кажется, был в гостях в Москве и увидел просто обычный калькулятор у родственников. Не то чтоб  я их не видел, но вот дома, с возможностью поиграться прям с цифрами, которые сам складываются - наверное это меня тогда и приворожило навсегда.
Потом был уже свой  программируемый калькулятор МК-54 и журнал Наука и Техника, где в каждом выпуске рассказывалось о какой-то программе для него. Написание своей первой игрушки, ха, по факут это был прототип Angry Birds,  как я сейчас понимаю - стрельба из пушки)
Дальше я попал в первый год обучения когда ввели информатику в школах. На весь город был всего один класс с КУВТ Ямаха, нас туда водили вроде раз в неделю. Для всех это было мука и трата времени, но не для меня - меня оттуда не могли выгнать. На уроках наша информатичка отсаживала меня на заднюю парту и просила молчать, что бы я не позорил ее авторитет.  Хорошая была тетка, только знаний - краткие курсы летом. А у меня был друг еще и его старшая сестра работала в каком то ВЦ, там стояли советские аналоги вроде как IBM 360, Но уже с дисплейными терминалами, не перфокарты. и я туда прерывался при малейшей возможности. 
Так что у меня не стоял выбор института по окончании школы - конечно же МРТИ. И понеслось.

Fortran  на перфокартах,  Паскаль во всех вариациях, для диплома писал программу на ассемблере. Потом армия - все искал как подключится к встроенной ЭВМ  ЗРК  С-200. Слава богу не дали, неизвестно чтобы я там натворил.)))
После армии  - работа в институте, филиале Госкомстата, в отделе программирования. Писали первую автоматизацию для нынешнего БеларусБанка - DBaseII, DBaseIII, FoxPro. 
Потом частная фирма руководитель отдела автоматизации, попытка автоматизировать торги на сырьевой бирже, но это быстро развалилось все как и все в 90-е и надолго ушел в свой бизнес, никак не связанный с компьютерами, правда на полставки числился инженером-программистом в школе. 
После ухода из торговли примерно в 2007 году - своя фирма по прокату авто. И там понадобился уже свой сайт - это был мой приход в веб. Сначала что-то ужасное на народ.ру и хтмл, потом Вордпресс. Понял что мен этим интереснее заниматься чем  прокатом и постепенно свернул деятельность, переключившись на интенет полностью. Вордпресс, Drupal, Jumla, YiII, Laravel,  как полагается свой самописный фреймворк.
Какие-то попытки  в SEO - неинтерсно. 

Ради интереса решил поискать вакансии по Вордпресс и в 2016 году попал в фирму продуктовую, где проработал 2 года начальником отдела  веб-разработки. Пришел  просто написать им сайт на вордпресс, но остался дольше ожидаемого, еще и отпускать не хотели.
В это время хороший друг, с одного форума кстати, которого давно нет, окунул меня в мир Пайтон. С тех пор  и все изменилось. 
Вполть до того, что я успешно прошел интервью на позицию Сеньор ПХП/Вордпресс разработчику в крупнейший белорусский аутсорс, но отказался от оффера.
Правда через полгода  получил оффер в эту же фирму на позицию Пайтон инженер. 2018 год. Ну и вот я все еще там, Поменял правда локацию.

Ухты, надо сохранить это где-то сбе, второй раз я на такой повод не пойду.

ArbNet #:
Я тебе говорил уже, учить меня будешь когда сам что-то сделаешь, свою нейросеть напишешь без готовых библиотек в данном случае, тогда да, можно будет тебя считать математиком. И не по готовым примерам, а что-то своё придумаешь более гибкое и лучшее решение. Вот тогда я буду к тебе прислушиваться, а сейчас завали свой учительский талант от сюда подальше.
Вот жаль что ты не умеешь слушать, а из-за отсутствия знаний переходишь снова на личности, ну да ладно, не стану обращать на это внимания, давай по делу. Решил немного глубже уйти в тему. 
ArbNet #
так как в нейросетях абсолютно другие подходы,

Какие, раз уж ты об этом заговорил? Ладно, ты все равно не ответишь, поэтому сам. Цепь Маркова это самый примтивный предикт, распределение весов в зависимости от предыдущего состояния.
Нейросеть математически это просто матрица весов,  вектор входов, вектор смещения послойно. Когда ты заявляешь, что знаешь, как сделать лучше, что ты имеешь ввиду?
Вот я субботу провел продуктивно.
Так как ты кричишь - что я все делаю с помощью библиотек, тряхнул стариной. Начал без Pytorch/JAX, чтоб по олдскульному.
Вот тебе простая нейросеть - корреляция температуры и влажности. 

import math



def matmul(W, x):

  """

  Матричное умножение W @ x.


  W — список списков (матрица весов), размер [n_out x n_in].

  x — список чисел (входной вектор), длина n_in.


  Возвращает список длины n_out: каждый элемент —

  скалярное произведение строки W на вектор x.


  Пример:

      W = [[1, 0], [0, 1]]  # единичная матрица 2x2

      x = [3.0, 5.0]

      matmul(W, x)  # → [3.0, 5.0]

  """

  return [

      sum(W[i][j] * x[j] for j in range(len(x)))

      for i in range(len(W))

  ]



def add(a, b):

  """

  Поэлементное сложение двух векторов: a + b.


  a, b — списки чисел одинаковой длины.


  Возвращает список той же длины.

  Используется чтобы прибавить смещение b после matmul.


  Пример:

      add([1.0, 2.0], [0.5, -0.5])  # → [1.5, 1.5]

  """

  return [a[i] + b[i] for i in range(len(a))]



def relu(z):

  """

  Активация ReLU (Rectified Linear Unit): max(0, z) для каждого элемента.


  z — список чисел (выход линейного слоя до активации).


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

  положительные остаются как есть.


  Зачем нужна: без нелинейной активации стек слоёв

  математически равен одному матричному умножению.


  Пример:

      relu([-1.2, 0.0, 3.4])  # → [0, 0, 3.4]

  """

  return [max(0, v) for v in z]



def sigmoid(z):

  """

  Активация sigmoid: 1 / (1 + e^(-z)) для каждого элемента.


  z — список чисел.


  Возвращает список значений в диапазоне (0, 1).

  Удобна на выходном слое для задач бинарной классификации:

  результат можно интерпретировать как вероятность.


  Пример:

      sigmoid([0.0])   # → [0.5]

      sigmoid([5.0])   # → [~0.993]

      sigmoid([-5.0])  # → [~0.007]

  """

  return [1 / (1 + math.exp(-v)) for v in z]



def forward(x, W1, b1, W2, b2):

  """

  Полный forward pass: прогон входа через сеть.


  Архитектура: вход → скрытый слой (ReLU) → выходной слой (sigmoid).


  Аргументы:

      x  — входной вектор, список длины n_in.

      W1 — матрица весов скрытого слоя, размер [n_hidden x n_in].

      b1 — смещения скрытого слоя, список длины n_hidden.

      W2 — матрица весов выходного слоя, размер [n_out x n_hidden].

      b2 — смещения выходного слоя, список длины n_out.


  Возвращает:

      y  — выходной вектор, список длины n_out.

             Каждое значение в диапазоне (0, 1).


  Внутри происходит:

      z1 = W1 @ x + b1   # линейное преобразование

      h  = relu(z1)       # нелинейная активация

      z2 = W2 @ h + b2   # снова линейное

      y  = sigmoid(z2)    # финальная активация

  """

  z1 = add(matmul(W1, x), b1)

  h  = relu(z1)

  z2 = add(matmul(W2, h), b2)

  y  = sigmoid(z2)

  return y



# ---------------------------------------------------------------------------

# Веса и смещения — здесь хранятся "знания" сети.

# В реальной задаче они подбираются обучением (backprop).

# Здесь заданы вручную для демонстрации forward pass.

# ---------------------------------------------------------------------------


W1 = [

  [ 0.5, -0.3],   # веса нейрона h0: смотрит на x[0] и x[1]

  [ 0.8,  0.1],   # веса нейрона h1

  [-0.6,  0.9],   # веса нейрона h2

]

b1 = [0.1, -0.2, 0.3]   # смещения скрытого слоя


W2 = [[0.7, -0.4, 0.6]]  # один выходной нейрон смотрит на h0, h1, h2

b2 = [0.0]


# ---------------------------------------------------------------------------

# Вход: два признака, например [температура, влажность]

# или просто любые два числа.

# ---------------------------------------------------------------------------

x = [1.0, 0.5]


y = forward(x, W1, b1, W2, b2)


print(f"Вход:  {x}")

print(f"Выход: {y[0]:.4f}  (вероятность от 0 до 1)")

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

Но конечно, это все игрульки и трата времени, мы это на первом курсе универа проходили. Ух, как же я боялся нашего математика! Кто кто получал вышку  в 90-х годах в Минске, навернаяка знают учебник ддля вузов, написанный Жевняк и Карпук - вот Карпук у нас все это безобразие и вел.

Как я уже говорил - игрульки это когда есть Numpy. - математика под пайтон, написанная на плюсах.
Кода немного меньше, но эффективность в 10-ки и сотни раз выше

import numpy as np



def relu(z):

  """

  ReLU: max(0, z) поэлементно.


  z — np.array любой формы.

  Возвращает массив той же формы.

  """

  return np.maximum(0, z)



def sigmoid(z):

  """

  Sigmoid: 1 / (1 + e^-z) поэлементно.


  z — np.array любой формы.

  Возвращает массив той же формы, значения в (0, 1).

  """

  return 1 / (1 + np.exp(-z))



def forward(x, W1, b1, W2, b2):

  """

  Forward pass: вход → скрытый слой (ReLU) → выход (sigmoid).


  Аргументы:

      x  — np.array формы (n_in,)

      W1 — np.array формы (n_hidden, n_in)

      b1 — np.array формы (n_hidden,)

      W2 — np.array формы (n_out, n_hidden)

      b2 — np.array формы (n_out,)


  Возвращает:

      y  — np.array формы (n_out,), значения в (0, 1)

  """

  z1 = W1 @ x + b1

  h  = relu(z1)

  z2 = W2 @ h + b2

  y  = sigmoid(z2)

  return y



# ---------------------------------------------------------------------------

# Веса — в реальности подбираются обучением, здесь заданы вручную.

# ---------------------------------------------------------------------------


W1 = np.array([

  [ 0.5, -0.3],

  [ 0.8,  0.1],

  [-0.6,  0.9],

])

b1 = np.array([0.1, -0.2, 0.3])


W2 = np.array([[0.7, -0.4, 0.6]])

b2 = np.array([0.0])


x = np.array([1.0, 0.5])


y = forward(x, W1, b1, W2, b2)


print(f"Вход:  {x}")

print(f"Выход: {y[0]:.4f}")


Ну как тебе? Заметь, это далеко не все, что я сделал за выходные, пока ты прокрастинировал...
Будешь продолжать спорить со мной о знаниях?
BTW, Говорите, у меня бесполезные поделки? 😂 Смотрите как мой анализатор с легкостью попалил иканамиста и его клона  alexxsnowww
Если текст к топику был в основном сгенерен ИИ и там сложно было заподозрить. То уже первый же коммент расставил все на свои места:

На самом деле такой процент говорит об очень большом сходстве текстов.
Вангую дальше - по выходу из бана клон пропадет из поля. А если нет - админам не составит большого труда сопоставить IP  входа на форум для двух акков.
😂
ArbNet #:
Хорошо, будет тебе аргументировано.
Не было времени вчера отвечать, хотелось воспользоваться пятницей и обещаной хорошей погодой.
Но давай по сути, а твои личные нападки оставим для соответствующей темы, они прям хороши для разбора.
ArbNet #:
Во-первых, как ты правильно заметил это хорошая практика и саморазвитие.
Да, только за этим должен стоять какой то результат - где он? 
ArbNet #:
Во-вторых, про недостатки существующих решений, их масса, все не перечислить

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

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

Забавное утверждение, но давай копнем поглубже...
Если  ты разобрался, тогда почему ты говоришь про оллама? Она не предназначена для создания нейросети. Нейросеть - это математика. Ты можешь вообще ее написать на листочке бумаги. Если в коде - то есть инструменты. От самых простых, типа NumPy, до специальных типа PyTorch/TensorFlow. Ты говоришь, что ты разобрался, а я тока поверхносно. 
Только вот я когда заинтересовался начал именно с математики, вообще с цепей Маркова. 

ArbNet #:
В третьих, я не собираюсь делать подобие существующих LLM, я лишь хочу сделать мини движок для создания моделей под определённое направление, способных запускаться локально, работать быстро без графического процессора и тд. под микросервисы. Например, для создания уроков для студентов как ты делаешь можно было бы использовать без всяких костылей, для какой-то тех поддержки разных учреждений, для своего фреймворка чтобы люди могли быстро на нём создавать то, что им нужно и тд. и тд.

Ты опять накидал набор слов, не понимая смысла. То оллама, то уже свой движок... Все что ты написал - давно существует.
Как ты думаешь, чем занимаются все эти люди в Гугл, Антропик итд? Ищут варианты как  усложнить, чтобы заставить любей купить больше токенов и видеокарт. А ты разобрался, почему на графике нейросеть работает быстрее?
Твои заявления - это регресс на самом деле. 

У меня например нет костылей, наоборот я работаю над минимально необходимой архитектурой. То есть простые задачи решаются на малых мощностях, сложные - подключаются монстры. Тут уже есть те, кто использует оркестраторы задач и вполне успешно. И опять какой фреймворк? Какие люди и что создавать? Я не понимаю) 
Обьяснишь?

Devstory #:
Приложения делать или другой контент. Игры, видео. . С ИИ можно много всего реализовать . 
И как, много уже сделал?
Всего: 8381