Обсуждение проблем использования локальных LLM (псевдо ИИ)

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Обсуждение проблем использования локальных LLM (псевдо ИИ)

Сообщение Alex2013 » 13.11.2024 15:52:02

Чтобы не плодить оффтоп в соседней теме посвященной "облачным сервисам" думаю имеет смысл открыть отдельную тему по "домашним" адаптациям LLM (Больших языковых моделей) и софта применяемого для их использования в "домашних условиях" .

Мой опыт использования "Локальных LLM" пока невелик и в основном касается использования наверное самой простой оболочки для LLM gpt4all и нескольких сравнительно простых моделей . (содержащих от 3 до 9 миллиардов параметров)

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

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

Оболочка gpt4all умеет работать как с использованием CPU так и GPU (+ дополнительно умеет каким-то образом использовать API "Вулкан" )

Системные требования щадящие 8-16 гигабайт памяти на компе ( но разумеется "чем больше тем лучше" ), а нижняя граница требований к GPU довольно размазана(Например у меня на карте 4гб видеопамяти, но я вполне могу использовать модели размером в 6-7-ть гигабайт в "GPU режиме")

Скорость работы для LLM "понятие относительное" ( очень многое зависит от конкретной задачи ) но в отличии от опыта локального использования "Стабильной Диффузии "( генерации изображений) почти нет ощущения "клаустрофобии" из за нехватки вычислительной мощности и ресурсов.

Лучшие показатели 9-10 токенов(слов) в секунду но и скромные 1.5 -2 токена в секунду вполне оправдывают затраченное на получение ответа время из за временами просто огромного объёма работы которую иногда подделывает нейросеть в процессе генерации ответа.

"Уровень осведомлённости" нейросети LLM штука довольно забавная например можно на прямую спросить модель что-то вроде
"What mathematical methods for scaling bitmap images are known to this model available for implementing them as functions in the Pascal programming language? (Now I am interested only in the list and brief description, not in the functions themselves)"

(То есть: Какие математические методы масштабирования растровых изображений известны данной модели,из доступных для реализации их в виде функций на языке программирования Pascal? (Сейчас меня интересует только список и краткое описание, а не сами функции))
В ответ мы получи некий довольно куцый список например из 4 методов ...
1 Bilinear Interpolation: A simple method that estimates the pixel value at a scaled position by averaging neighboring pixels.
2 Bicubic Interpolation: An improved version of bilinear interpolation, using more neighboring pixels to estimate the target pixel value.
3 Nearest Neighbor (NN): Simply copies the original pixel values without any interpolation or resampling.
4 Box Filter: A simple filter that replaces each pixel with a weighted average of its neighbors.

Но если спросить так

Напиши семь простых функций масштабирования растрового изображения на языке программирования Паскаль (используя FPC + Lazarus)
Исходные данные: изображение типа TBitmap требуемые Ширина и Высота. Выходные данные: изображение типа TBitmap.
Используя шаблон Function ScaleИмяМетода(B:TBitmap;W,H:Integer):TBitmap;
от быстрых и небольших по размеру кода к медленными сложным выдавая их по одной с остановками.
(продолжая ответ на запрос по команде "Дальше" )

То внезапно оказывается, что модель (Успешно достав "из закромов родины " еще три метода ) знает больше чем сама про это знает ! :wink: :idea:
5 Lanczos Filter: An improved box filter, using a larger kernel to reduce aliasing artifacts.
6 Catmull-Rom Splines: A method for creating smooth curves by connecting neighboring pixels and applying Catmull-Rom splines.
7 B-Spline Interpolation: Similar to Catmull-Rom splines, but uses B-splines instead of Catmull-Rom splines.

(Правда если пожадничать и написать "Напиши десять функций" то есть не плохой шанс, что "сильно озадаченную" модель "хватит удар" и она начнет "честно и искренне галлюцинировать" на предмет "квантовых резонансных распределений" и тому подобного псевдонаучного бреда , а попытавшись реализовать этих "монстров ЕГГО-ЛОГИИ" в реальном коде "честно и доблестно" повесит комп )

"Едим дальше"(тм) :idea:

У оболочки gpt4all есть очень полезная фишка которая называется "Коллекции локальных документов" которая позволяет использовать файлы в локальной папке в качестве "внешнего контекста" который доступен для анализа по запросу.
Но есть проблема: ЦЕЛИКОМ переработать или перевести текст из "внешнего контекста" сходу не получится, а разные ухищрения типа "переводи текст по одному абзацу" работают с "переменным успехом" .

Добавлено спустя 57 минут:
Еще одна интересная фишка !
Если просто спросить написать код функции на "диалекте FPC"

То получим что-то такое
Код: Выделить всё
Function GetNearestNeighbor(const B: TBitmap; x, y: Single):TColor;
var nx, ny: Integer; begin
nx := Round(x); ny := Round(y);
if (nx >= 0) and (ny >= 0) and (nx < B.Width) and (ny < B.Height) then
GetNearestNeighbor := B.Canvas.Pixels[ny, nx];
end;

Function ScaleNearest(B:TBitmap;W,H:Integer):TBitmap;
var
nWidth, nHeight: Integer; i, j: Integer;
NewPixel: TColor;
begin
Result := TBitmap.Create;
Result.Width := W;
Result.Height := H;
nWidth := B.Width; nHeight := B.Height;
for i := 0 to Result.Height - 1 do
   for j := 0 to Result.Width - 1 do
   begin
     NewPixel := GetNearestNeighbor(B,jnWidth/Result.Width,inHeight/Result.Height);
     Result.Canvas.Pixels[i,j] := NewPixel;
end;
end;

(То есть очень медленный Canvas-код .)

Но можно спросить ИНАЧЕ .
И получить "другое дело"... :wink:
Код: Выделить всё
//Конечно, вот примеры функций масштабирования с использованием
//прямого доступа к данным изображения TBitmap.RawImage.Data:
//Функция Nearest Neighbor:
function ScaleNearestNeighbor(B: TBitmap; W, H: Integer): TBitmap;
var
  NewBmp: TBitmap;
  SrcPtr, DestPtr: Pointer;
  X, Y: Integer;
begin
  NewBmp := TBitmap.Create;
  try
    NewBmp.Width := W;
    NewBmp.Height := H;
    NewBmp.PixelFormat := B.PixelFormat;

    // Выделение памяти для нового изображения
    SetLength(NewBmp.RawImage.Data, NewBmp.Width * NewBmp.Height * (B.PixelFormat.BytesPerLine / 8));

    SrcPtr := B.RawImage.Data;
    DestPtr := NewBmp.RawImage.Data;

    for Y := 0 to H - 1 do
      for X := 0 to W - 1 do begin
        // Вычисление индекса пикселя в исходном изображении
        var SrcX, SrcY: Integer;
        SrcX := (X * B.Width) / NewBmp.Width;
        SrcY := (Y * B.Height) / NewBmp.Height;

        // Копирование значения пикселя из исходного изображения в новое изображение
        Move(SrcPtr + SrcY * B.PixelFormat.BytesPerLine + SrcX * B.PixelFormat.BytesPerElement, DestPtr + Y * NewBmp.Width * (B.PixelFormat.BytesPerLine / 8) + X * (B.PixelFormat.BytesPerLine / 8), B.PixelFormat.BytesPerElement);
      end;
Result := NewBmp;
end;
Последний раз редактировалось Alex2013 15.11.2024 15:44:29, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Снег Север » 15.11.2024 12:26:53

Не понимаю одного - неужто овчинка стоит выделки? Морочиться с ИИ чтобы делать десяток строк рутинного кода - это как те фрики, которые заводят киберпылесос для уборки студии в десяток квадратных метров свободного пола.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alex2013 » 15.11.2024 14:27:01

Снег Север писал(а):Не понимаю одного - неужто овчинка стоит выделки? Морочиться с ИИ чтобы делать десяток строк рутинного кода - это как те фрики, которые заводят киберпылесос для уборки студии в десяток квадратных метров свободного пола.


Разумеется почти любая конкретная задача впечатления не производит от слова совсем . ( тем более что я выбрал для примера самую понятную и простую + не стал засорять форум выкладывая весь ответ целиком ( кода там было на порядок больше ) )


Но тут важна сама возможность! Просто не нужно забывать что LLM это слабенькое ущербное, но все-же ОТРАЖЕНИЕ "среза знаний" и даже если не учитывать "скрытый массив" и то что LLM может немного "попотев" вывести самостоятельно

*(например я могу попросить написать тоже масштабирование с использованием OpenGL или OpenCV и т.п. или на JS который сам почти не знаю )

...даже простая "банальная эрудиция" LLM впечатляет! Нет в "знаниях и умениях LLM" и близко нет ничего "сверхчеловеческого" но они просто ДРУГИЕ ( так же как знания и умения другого человека ) + LLM пока что "патологически" не умеет забывать то чему научена

+ LLM действительно "без балды" умеет "работать с документами " извлекая недостающие знания например прямо из учебника математики или некого справочника.

Я уж не говорю про рутинные задачи вроде перевода и правки текста ( или кода) это умеют практически все даже самые простые модели на 2-3 миллиарда параметров.

Что касается "локальных LLM" то это отдельная история, несмотря на их явные ограничения, они могут быть "под рукой" в любой момент и что важно умеют "сохранять профиль" чата где получилось разжевать задачу так что до LLM "дошло", что почти не возможно при использовании онлайн сервиса . ( там каждый раз происходит "респаун" и получается "свежий собеседник" причем с НОВЫМИ "тараканами в голове" )

Разумеется, "локальный LLM" ни как не может заменить интернет или справочники. Но в отличии от них они всегда готовы дать хоть какой-то ответ. Плюс при нынешних терабайтовых объемах "файловых помоек" размеры модели в 5-10 гигабайт это почти "ни о чем" можно не особо напрягаясь держать пять-десять разных моделей на разные случаи жизни .
И т.д. (я пока не разобрался как следует но "резервы возможностей" там еще явно некислые ! )

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

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

( так же как при работе с графикой, или построением 3д модели по 2д изображению, там это видно довольно наглядно ( где-то до 40-60% генерация идет четко и довольно логично но детализация добавляет пользовательские "свистелки перделки" ( хотя в некотором количестве они есть и в "базовой модели" ) и только часть их "попадет в тему" )
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение xchgeaxeax » 15.11.2024 16:50:58

Alex2013 писал(а):Его можно использовать как тупой гибрид телефона и фотоаппарата, а можно как неплохой "информационный мультитул

Мультитул
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alex2013 » 15.11.2024 17:16:35

xchgeaxeax писал(а):
Alex2013 писал(а):Его можно использовать как тупой гибрид телефона и фотоаппарата, а можно как неплохой "информационный мультитул

Мультитул

Улыбнуло! :)
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alex2013 » 19.11.2024 01:45:20

"Едим дальше!"(тм)

Попробовал поставить оболочку LM-Studio (https://lmstudio.ai/)
Работает и по ощущениям быстрее gpt4all но не видит скаченных ранее моделей от gpt4all хотя формат файлов тот-же .
(Но возможно я просто не вник ) Зато есть встроенный поиск моделей на huggingface.co
Больше настроек и по идее круче функционал, но я все же хотел добраться до простой возможности интеграции LLM в свои проекты .
( " не простая " есть даже в том же gpt4all )

Так так что двинулся дальше ...

И скачал "консольную оболочку" нижнего уровня Ollama (https://ollama.com/) пробовал установить и тут начались ... :arrow:

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

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

Ну ладно "пытка не пытка" побую ставить на другому ноутбуке а там обновляемая вида ...и конфликт версий инсталлятор в ужосе "ничего не знаю, но в это винде я не работаю!" Чего ?! :idea:
Ладно плавали знаем ! powershell помощь ...

powershell .\OllamaSetup.exe Ура, запустилось ! Ставит ставит с нова не хватает места на диске "С:\" копаю интернет "гугловой лопатой" с трудом нахожу скрытый от народа ключ (powershell .\OllamaSetup.exe /DIR="X:\AI\Ollama" )

Ура процесс пошел ! Ставит куда надо ... Ставит Ставит Ставит.. холп! Снова нет места !! ЧЕГО!!!!!??? Там на диске 100 гигов свободно!
Нет дело определенно нечисто... применяю "дедуктивный метод" и выясняю что эта собака опять роется на диске Ц !

Нет ставить то это собака-инсталлятор куда надо ! Но в начале распаковывает офигенно большие файлы на все том же диске Ц !

Ну что ему еще сделать "хорошего" ? А?

"Я чего я ничего ..."
Пишу батник inst_olam_DRV.bat
Код: Выделить всё
@echo off
set OLLAMA_MODELS=%1:\AI\Ollama
set PATH=%pPATH%;%1:\AI\Ollama;
set TEMP=%1:\TEMP
set TMP=%1:\TEMP
.\OllamaSetup.exe /DIR="%1:\AI\Ollama"

"powershell .\inst_olam_DRV X"
Работает устанавливает... установил !
Уф!
Модели снова не видит ... ну ладно пишу аналогичный батник в конце ollama pull llama3.2:1b и ollama run llama3.2:1b
Качает ... скачал .. запустил вроде работает ..
А другую модель сможешь ?
ollama pull llama3.1:8b
Качает.. но странно что-то качает... Доходит до 15% откатывается до 6% думает, скатывается в ноль и висит.
Начинаю искать "троянцев и греков" ... троянцев не нахожу, а вот "греков" очень даже например зачем эта ollama прописала себя в автозагрузку ? Это что локальная версия сакйнет что-ли ? Но уладно..что с моделью то делать?

...и тут начинается "кернел паник"... у винды... я курсе что этого не бывает и что винда не линукс ... но что что ? На диске Ц НОЛЬ байт свободного места !!! :!:
:idea: Вашу Машу !!! set OLLAMA_MODELS не сработал !

Вообщем пока санитары не приехали решил на пару дней отложить дальнейшие разборки....
Вот такая история. :idea:
Последний раз редактировалось Alex2013 19.11.2024 18:18:44, всего редактировалось 4 раз(а).
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alexander » 19.11.2024 08:59:59

> или "зумер"

Так делают, когда хотят сделать быстрее и надёжнее. Вин уходит корнями в ДОС и есть ещё одна проблема: имена файлов отличные от 8.3 менее надёжны. Так что что-то вроде C:\myprog\ всегда надёжнее: 8.3, без пробелов и без национальных кодировок, диск Ц доступен всегда, пока есть система.
Так что это не поверхностное решение, а наоборот вдумчивое и в некотором смысле выстраданное: с перечисленными проблемами сталкивались и отказались от гибкости в этом месте.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alex2013 » 19.11.2024 13:01:04

Alexander писал(а):> или "зумер"

Так делают, когда хотят сделать быстрее и надёжнее. Вин уходит корнями в ДОС и есть ещё одна проблема: имена файлов отличные от 8.3 менее надёжны. Так что что-то вроде C:\myprog\ всегда надёжнее: 8.3, без пробелов и без национальных кодировок, диск Ц доступен всегда, пока есть система.
Так что это не поверхностное решение, а наоборот вдумчивое и в некотором смысле выстраданное: с перечисленными проблемами сталкивались и отказались от гибкости в этом месте.

В принципе это верно тем более что ставит не просто на "диск Ц" в аналог "home" то бишь "C:\Users\%username%\"(точнее саму прогу ставит в "C:\Users\%username%\AppData\Local\Programs\Ollama", а модели "C:\Users\%username%\AppData\Local\Ollamaа") но подумать что там может быть мало места в голову не пришло . Более того на гит-хабе и окрестностях народ буквально "волком воет" но разрабы даже не понимают о чем речь "бу бу бу Просто зайдите в «Переменные среды» и добавьте OLLAMA_MODELS и PATH"
Инфа про ключ инсталлятора буквально "закопана".
Код: Выделить всё
https://github.com/ollama/ollama/blob/main/docs/windows.md
( я нашел его не там, а вообще в описании какой-то совсем другой программы)
Зы
Кстати есть идеи почему "SET OLLAMA_MODELS =ДИСК:\ПУТЬ" не работает? ( неужели переменные среды только через sysdm.cpl править нужно )
Зы Зы
Про то что система по идее может стоять НЕ на диске Ц я вообще "скромно умолчу" ( Во времена XPруса я так делал постоянно но потом софт начал отчаянно тупить и "осетра пришлось урезать " ) ...
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение RRYTY » 20.11.2024 10:30:12

Судя по постам топикстартера, использование сабжа гарантированно хоронит любой проект.
RRYTY
постоялец
 
Сообщения: 208
Зарегистрирован: 25.12.2021 10:00:32

Re: Обсуждение проблем использования локальных LLM (псевдо И

Сообщение Alex2013 » 20.11.2024 13:28:27

RRYTY писал(а):Судя по постам топикстартера, использование сабжа гарантированно хоронит любой проект.

Откуда такой странный вывод ? ( Я вообще еще по сути дела только недели две "в теме" и только только начал разбираются с базовым софтом ) Или это по поводу отнятого "на бесчеловечные эксперименты над ИИ " времени ? Так я потратил на все про все едва ли полных три дня . ( и вообще нормальная мысль: разобраться в новой теме чтобы решить "нужно ли оно мне" ... ( если честно пока не понял, но узнавать новое всегда полезно! ) )
Зы
Вощем не удобряйтесь старине Зубу ( это он всегда сначала ворчит, а потом в тему вникает ) :wink: :idea:
Зы Зы
А вообще вот разберусь с софтом и зоопарком моделей прикручу свою привычную "оболочку для оболочки " тогда можно будет добраться до практического использования и каких никаких реальных выводов ...
А пока все это не более чем "записки путешественника". :idea:
+ Гайд для себя и идущих следом . :idea:
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru