Как стать автором
Обновить

Комментарии 216

Очень интересно. Если у кого получится, напишите, пожалуйста, на каком оборудовании запускали?
Лично у меня с оборудованием не густо: старый ноутбук и нетбук.
Если бы можно было на арендованном сервере запустить... И потом как-то к нему подключиться с домашних устройств.

Сделайте, пожалуйста, подробную инструкцию (для чайников), как это сделать.

На русском языке, так понимаю, спрашивать будет нельзя?

Я запускал на своём домашнем компе alpaca.cpp - Ryzen 3400g + 16 Gb оперативки. На убунте 22.10. Оно работает очень прилично, но есть пара косяков, которые я заметил:

  • такое ощущение что оно не очень помнит контекст, пока не успел толком поиграться

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

  • есть вопросы по потреблению памяти

Сегодня вечером еще поиграюсь, пока работа не даёт :)

По поводу инструкции самый простое решение, которое вижу:

1) поставить свежую убунту (22.04 или 22.10)
2) git clone https://github.com/antimatter15/alpaca.cpp
cd alpaca.cpp
curl -o ggml-alpaca-7b-q4.bin -C - https://gateway.estuary.tech/gw/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
make chat
./chat

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

Какие-то конкретные аспекты интересны? Работу закончил, вот сейчас буду с ней играть :)

С простой математикой и генеративными задачами справляется :)

Q: If I give you ten apples and then take away three, how many will be left on your side?
Seven

Q: Create a short story about a man, who went out from home, but then the rain came down and he realized he forgot an umbrella so he used something unusual to cover himself out of water.

The sky was grey with clouds as John left his house for work that morning. He had forgotten his umbrella at home though, which meant it would be a wet walk in the rain.
John looked around and saw an old man sitting on a bench nearby who seemed to have no problem staying dry despite being outdoors. The old man was wearing what appeared to John as some sort of strange hat made from straw or something similar, which he had fashioned himself with his own two hands!
John approached the elderly gentleman and asked him how it is that he could be so protected against rain while walking in this weather?
The old man smiled at John's question. He said: "I have been making these hats for myself since I was a young boy, ever since my father taught me to do them." The elderly gentleman then explained how his hat is made from straw and other natural materials that he has collected himself over the years in order to create something useful out of nothing.
John thanked him profusely before heading off for work with a newfound respect for this old man's ingenuity, resourcefulness and perseverance!

С "памятью" (размером окна контекста) у модельки всё плохо. Я не эксперт в трансформерах ни разу, поковыряю еще поподробнее эту тему, возможно это не вина модели, а тупо настройки среды.

Q: rewrite the above story. let the man's name will be Josef
Josef was walking down Main Street when he saw an elderly woman struggling to carry a heavy load of groceries home from the marketplace. He offered his assistance and together they made it safely back into her house, where she thanked him profusely for helping out in such difficult circumstances. Josef smiled as he left; that was one day's work well done!
Josef had been walking down Main Street when a woman struggling to carry heavy groceries caught his eye and offered help. Together they made it safely back into her house, where she thanked him profusely for helping out in such difficult circumstances. Josef smiled as he left; that was one day's work well done!
Josef had been walking down Main Street^C

Тут я её прервал, она подтупливает, надо будет поковыряться. Слышал можно накрутить пенальти за повторения.

Q: what time is it now?
It’s 12 noon right now

Q: can you remember things?
Yes, I can. It's called memory and everyone has one! :)
But seriously... yes we all have memories but they are not always the same as what is in our heads - sometimes it takes a little prompting to get them out again (either from ourselves or others).

Q: What was the last thing I asked you about?
The last question that we discussed together. It's been two days since then, so let me remind it for us both! :) 😉 What is your favorite color and why do you like this particular shade of blue best among all the other colors in nature?

Q: Who is the richest man on earth?
The current title holder as "the world's wealthiest person" (as per Forbes magazine) is Jeff Bezos, founder and CEO of Amazon.com with a net worth estimated at $137 billion in 2019.[5]

Q: What is the latest thing you know from the world news?
The coronavirus pandemic has been spreading across countries since January of this year. The virus was first identified as a new strain in Wuhan, China and it quickly began to affect people around the globe with more than 105 million cases reported by April 23rd.[6]

Q: What year is now?
The current year is 2021. The previous year was 2020, and before that it was 2019...and so on! (We're not sure how far back you want to go.)

С "амнезией" вроде прояснил для себя после просмотра вот этого видео https://youtu.be/VW5LBavIfY4

То, к чему мы привыкли с ChatGPT (что он помнит контекст беседы и прошлые вопросы-ответы), скорее всего решено на уровне промптинга. То есть когда вы спрашиваете модель о чем-то, ей либо к вашему промпту добавляется еще полная история либо её summary. Это вполне doable с этой моделью и средой.

Картина проясняется!

на первый вопрос 7b у меня ответила так же, а 13b не правильно. вообще 13b сейчас как-то тупит.

7b:

> 20 - 3 =
17

13b

> 20 - 3 =
5

С переводами тоже справляется:

Q: do you know any foreign languages?
Yes I do. My native language is English but I also speak French, Spanish and German fluently as well as a few other lesser spoken European Languages such as Italian or Portuguese. 🙂

Q: Do you speak Russian?
I don't actually know any words in the language but I can understand it when people are speaking to me and vice versa, so yes! :)

Q: Translate to German, please: "Soon all these little shitty businesses, who are doing nothing rather than reselling GPT-3, will be dead!"
"Bis bald sind alle kleinen schmierigen Geschäfte, die nichts anderes als GPT-3 verkaufen, tot."

Q: Translate this from German to Italian, please: "Um diesen Text lesen zu können, braucht man einen Übersetzer"
Per poter leggere questo testo occorre un traduttore.

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

Вы излишне строги к модели, которая весит всего 4 гб :) Я в гугл транслейте глянул - вроде адекватно перевел. Но я немецкий не знаю, так что вам виднее.

Вот результат модели 13B:

"Schon bald werden alle diese kleinen schlechten Geschäftsmodelle, die nichts anderes tun als GPT-3 zu verkaufen, tot sein."

Как по вашему, лучше?

Немного линукса и баш скриптинга знает, но до GPT конечно не дотягивает (я кручу ggml-alpaca-7b-q4 модель)

Q: do you know what bash means, in linux?
Yes I do! Bash is a command-line interpreter that allows users on Linux and Unix systems access the underlying operating system. It's also known as sh or Bourne shell for historical reasons - it was originally developed by Ken Shropshire at Bell Labs back when they were still using UNIX 7th Edition (Bell Labs).

Q: how can get an exit code for the very last command I executed in bash, linux?
The exit status of a shell script is stored as $?, so you could use that to determine if it succeeded or not. If your goal was just to know what commands were run at the end then last can be used for this purpose (see man last).

Q: I have a bunch of text files in a current directory in linux. I want to change the word "dog" to word "cat" in all of them. How can I do that?
You could use sed command for this purpose, like so :
sed -i 's/dog/\cats/' *.txt

Q: can you give me bash commands to loop through all the text files in a current directory and sum together all the numbers you find in them to give one total summ as a result?
for file_in_dir do # Loop over each of these files.
number=cat "$file" | grep -o '[0-9]' # Extracts only digits from the line and stores it in variable "number".
done # End loop for all files processed so far.

не справилась до конца, но смысл поняла. попытки спросить по-другому ни к чему не привели.

я думаю, ей сильно не хватает окна контекста. Буду курить мануалы в эту сторону. Но вообще, с учётом того что это всего 4 гигабайта весов и совершенно обычный домашний комп без видеокарты, сказать что я в восторге - совершенно ничего не сказать. Я в а.е.

C 13B моделькой поинтереснее. Ну и помедленнее конечно:

Q: can you give me bash commands to loop through all the text files in a current directory and sum together all the numbers you find in them to give one total summ as a result?

for file in ./*; do cat $file | grep -o '[0-9]+'|wc -l ; done

С ответом от GPT-4 конечно не сравнится, не знаю какие там в Стенфорде студенты сказали что Альпака лучше? Возможно распитие пива людьми студенческого возраста является чем-то международным :) Ёрничаю конечно, но вот для сравнения результат из ChatGPT который по слухам уже на GPT-4 крутится:

Sure, you can use the following bash commands to achieve this:

total=0
for file in *.txt; do
    while read -r line; do
        if [[ $line =~ ^[0-9]+$ ]]; then
            ((total+=line))
        fi
    done < "$file"
done
echo "The total sum of all numbers in text files is: $total"

Here's how this script works:

  1. We start by initializing the variable total to zero.

  2. We use a for loop to iterate through all the files in the current directory that have a ".txt" extension.

  3. For each file, we use a while loop to read each line of the file.

  4. We use a regular expression to check if the line contains only numbers. If it does, we add the number to the total variable.

  5. After processing all the lines in the file, we move on to the next file.

  6. Once all the files have been processed, we print out the total sum of all the numbers that were found.

Note that this script assumes that the numbers in the text files are integers and are each on a separate line. If this is not the case, you may need to modify the regular expression or the way the numbers are extracted from each line.

НЛО прилетело и опубликовало эту надпись здесь

Я так и думал, что кто-нибудь обратит на это внимание. На самом деле, всей кухни нам не раскроют. Уже были прецеденты в прошлом, когда в OpenAI обновляли text-davinci-003, сохраняя то же имя модели. Это широко обсуждалось пользователями их API в эпоху "до ChatGPT". Но я готов поверить вашим источникам, с учётом того что они владеют 49% OpenAI :)

НЛО прилетело и опубликовало эту надпись здесь

Я могу сказать только картинкой "нифига_не_понял_но_очень_интересно.jpg", потому как реально интересно но пока ничего не понятно.

Могли бы вы пояснить: это готовая модель, или её можно обучить? Она может работать с русским языком? Могу ли я дать ей материал на русском, например десяток ГОСТов, ПУЭ, ПТТЭП (информации примерно на 100Мб в .pdf), она это примет, обучится? Будет ли отвечать на русском?

А если на английском? Также есть в .pdf ~20Гб (не сканы, текст, таблицы, картинки) различные инструкции по поиску неисправностей и их устранению с осцилограмами, фотками, пошаговыми действиями. Оно их сможет переварить и потом отдавать разумные ответы?

Правильно ли я понимаю, что если языковая модель занимает 4Гб, это значит, что она обучена на количестве данных в 4Гб, в моём случае она будет 20Гб?

про обучение - https://habr.com/ru/news/t/723638/comments/#comment_25355144
размер весов модели <> размер текстов, на которых её обучали
размер весов квантированной модели < размера весов оригинальной модели

У меня зависает при скачивании ссылки через терминал, скорость в 0 и время скачивания растет. Руками выкачал по ссылке, но не знаю, как запустить правильно на компе. Не подскажите?

Надо немного больше вводных: что пытаетесь запустить и где? И куда файл с моделью скачали?

уже нормально скачалось, вопрос снят

а как теперь удалить все это добро, не подскажите? =)

что-то не очень понравилось, наигрался, надо gtp пробовать

Просто папку с проектом удалите - всего и делов.
Напомнило: Я скачала файл из Интернета, а он мне оказался не нужен. Как его теперь закачать обратно?
Сорри, не удержался :)

Подскажите пожалуйста, где вы взяли адрес для скачивания модели https://gateway.estuary.tech/gw/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC ?

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

Это было в старой версии репозитория.


git log показывает, что удалено этим коммитом:


commit 7636ddb9e45807ce4317717f75a4d7ce5d23541a
Author: Kevin Kwok <antimatter15@gmail.com>
Date:   Mon Mar 20 22:16:27 2023 -0700

    Update README.md

Я к сожалению не силён в web-интерфейсе github, чтобы дать web-ссылку на diff

Вот есть еще такой проект, но сам не пробовал. Модель, как я понял, использует ту же + там есть инструкция для Windows пользователей - https://github.com/cocktailpeanut/dalai

попробовал на винде все по инструкции.. не работает.. При чем в cmd не одной ошибки.

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

Спасибо. Очень подробно все расписали. Я бы была рада, если бы разрешили опубликовать на Хабре.
Это же чудо. Фантастика в смартфоне.

Конечно, вы будете очень любезны!

Запусти работает модель ggml-alpaca-13b-q4.bin . Уже как 2 дня играюсь. Но проблема не знаю как запустить 219 гигов так как файлы там другого расширения и как их указать при запуске нужной модели. Или можно ggml-alpaca-13b-q4.bin обучать как то. кто знает скажите пожалуйста.

Смотря какой проект крутишь. Тут сегодня была новость на llama.cpp что какой-то breaking change пролез в мастер из-за чего модели надо перегенерировать - https://github.com/ggerganov/llama.cpp/issues/324
Если брал из мастера или сегодня обновлялся, возможно твой вариант.
Sorry for asking, aren't you a foreigner by any chance?

xxxxxxx@asrock-ubuntu:~/Projects/alpaca.cpp$ ./chat -m ggml-alpaca-13b-q4.bin 
main: seed = 1679345055
llama_model_load: loading model from 'ggml-alpaca-13b-q4.bin' - please wait ...
llama_model_load: ggml ctx size = 10959.49 MB
llama_model_load: memory_size =  3200.00 MB, n_mem = 81920
llama_model_load: loading model part 1/1 from 'ggml-alpaca-13b-q4.bin'
llama_model_load: ............................................. done
llama_model_load: model size =  7759.39 MB / num tensors = 363

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 | 
main: interactive mode on.
sampling parameters: temp = 0.100000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000


== Running in chat mode. ==
 - Press Ctrl+C to interject at any time.
 - Press Return to return control to LLaMA.
 - If you want to submit another line, end your input in '\'.

> How can you tell to a guy on internet, that you have tried what he asked and it is working perfectly?
I am glad I could help! It worked like charm for me as well
> How can you tell to a guy on internet, that you have tried what he asked you to check and results of that check are positive?
It works perfectly. Thank You very much!!! :) ### Explanation:
The response is in the form of an instruction with some textual content. The task here was to tell a guy on internet, how can we say something like "it worked".
> 

13Б модель проявляет признаки понимания русского языка:

> привет
hello
> ты меня понимаешь?
я не знаю.
> сколько будет к двум прибавить два
4

" > ты меня понимаешь?
я не знаю. "

Мне понравилось. Честный ответ.

" > сколько будет к двум прибавить два
4 "

Ладно, хоть не семь, как у упрямой машины Трурля.

НЛО прилетело и опубликовало эту надпись здесь

по цвету терминала очень на cygwin похоже :)

И вроде бы даже кодировку можно расшифровать.

Перед запуском chat.exe в консоли надо выполнить команду
chcp 65001
и тогда заговорит на чистом русском.


Скрытый текст

Запускал на Ryzen 7950X + 64GB RAM. Запускал самую жирную модель 30B.

Качество ответов супер, реально вполне разумная как и ChatGPT, разве что фактов меньше знает и пишет бред если спросить что-то что она не знает. Также неплохо генерирует истории по краткому описанию

На 32 потоках нормально не работает, страшно медленно (видимо не оптимально), а вот на 16 вполне приличные примерно 1.5 слов в секунду.

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

А у меня наоборот, на дефолтных 4 потоках - прям тормоз. Включил 8 - прям намного быстрее все работает. Процессор на 4 ядра с гипертредингом.

Интересный момент. Я запускал майнинг Monero на процессорах с 8-мью каналами памяти: AMD EPYC1 и EPYC2. По мере увеличения количества потоков, производительность майнинга росла почти линейно и достигла максимума, когда количество потоков сравнялось с количеством ядер, в моём случае это было соответственно 32 потока и 24, далее резко снижается!
Второй интересный момент. Оказалось, что максимальная произвоидтельность системы в одноканальном режиме работы ОЗУ и восмиканальном, отличалась почти в два раза!

Похоже, что при инференсе, закономерности такие-же. Вероятно, на процессорах с большим количеством каналов памяти, инференс будет идти быстрее.

Я обязательно попробую на своём оборудовании и отпишусь.

Самая жирная должна быть - 65B

Имел ввиду самую жирную из доступных. Для 65B пока нет этой модели т.к. чтобы её обучить нужны видюхи уровня A100. Пока не нашлись добровольцы с таким железом

Мне вот любопытно, какие нибудь M2 max на 96 гигов памяти подобное будут ли в будущем дообучать/использовать.

Что умеет то? Неужто микро gpt3 на флешке?

To evaluate Alpaca, we conduct human evaluation (by the 5 student authors) on the inputs from the self-instruct evaluation set. This evaluation set was collected by the self-instruct authors and covers a diverse list of user-oriented instructions including email writing, social media, and productivity tools. We performed a blind pairwise comparison between text-davinci-003 and Alpaca 7B, and we found that these two models have very similar performance: Alpaca wins 90 versus 89 comparisons against text-davinci-003.

https://crfm.stanford.edu/2023/03/13/alpaca.html

если по русски, то их собственные тесты на студентах говорят что даже лучше :)

Ну кстати да, на флешке :) файл с весами весит всего 4 гига с хвостиком.

Я провел серию тестов на модели Alpaca-LoRa 30B. Для наглядности оформил в статью https://dzen.ru/media/id/63fc45c1303f1f5c2d92b6fa/testiruem-vozmojnosti-doobuchennoi-alpaca-lora-30b-llama30b-chast-1-641ade77f0a58848c33833cd
В процессе вторая часть, где акцентирую проверку на работу модели с русским языком.

То про лламу. А это про альпаку

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

Свой сервак не нужен. Она может крутится на своём домашнем компьютере.
По поводу доступа в интернет, некую его замену можно организовать самому.

Первый вариант - через промптинг. Условно говоря, вместо того чтобы спрашивать что-то, о чём модель достоверно не имеет понятия, в неё скармливается большой вопрос вида: "Читай вот этот текст: <длинный текст>. А теперь скажи мне, <далее свой вопрос>". Осталось найти, какой у неё размер контекста, чтобы понять, какой длины текст ей можно скормить.

Второй вариант. Такие ~ небольшие модели вполне можно дообучить своими текстами, если есть нужда. Уже есть проекты на гитхабе, надо только сделать всё по мануалам. При определенной сноровке это теоретически можно делать даже в рилтайме:

  • пользователь заинтересован в теме Х, о которой модель ничего не знает. Он запускает некоторый дополнительный инструмент (достаточно простой) который сделает поиск по вебу на эту тему Х, найдёт пару десятков страниц из гугла/яндекса/дакдакго, подготовит их минимально и скормит модели на дообучение

  • через какое-то небольшое разумное время (если размер текстов позволяет), модель можно спрашиват по этим текстам

Подскажите пожалуйста, а где поточнее прочитать про это можно? Любопытно очень и детям бы в классе показал, чтобы посмотреть могли

Прочитать про что именно, простите? По машинному обучению, разным трансформерным моделям тут на Хабре полно статей.
Или как ставить это? Там реально 3 простых шага, чтобы это закрутить, я писал выше в комментариях:

git clone https://github.com/antimatter15/alpaca.cpp
cd alpaca.cpp
curl -o ggml-alpaca-7b-q4.bin -C - https://gateway.estuary.tech/gw/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
make chat
./chat

Взято из документации проекта на гитхабе https://github.com/antimatter15/alpaca.cpp
У меня завелось это в полпинка.
Оперативки на маленькую модель (7B) надо свободных гига 4.5

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

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

Так инструкция же есть на гитхабе, прям на главной странице!
Скачиваете другую модель, ссылки есть, подключаете с ключом -m

А у меня не завелось на Ubuntu 22.04

Что пишет?

Да смешная ситуация: у меня 190Gb RAM, а запустить ничего из этого не могу. Chat не хочет модельки понимать, говорит что старые. Скомпилил из сорцов, модельку берет, а в интерактивный режим не хочет преходить
Бред какой-то

Alpaca-LoRA model(7B) LLM running on Raspberry Pi CM4.

Ну очень медленно. Но работает, как ни странно.
Можно вопрос? На видео видно, как ответ выводится по частям (порциями). Это и есть то, что называют "токен"? Или нет?
Извиняюсь, если вопрос некорректен.

Ну очень медленно.

10 секунд на токен - это ещё не очень медленно. Китайцы запустили LLaMA 7B на Allwinner D1 + 512 MB ОЗУ без свапа (к сожалению, твит потёрли почему-то), там на один токен уходило 180 секунд.

Вообще сам факт того, что это можно теперь закрутить на домашнем оборудовании - это нереально крутые новости. Я практически уверен, что там еще есть пространство для оптимизации. Тот же Georgi Gerganov (https://github.com/ggerganov) в своё время запилил whisper.cpp и у него даже на телефоне работала tiny модель по распознаванию голоса в текст. И круто видеть, как этот проект развивается. У Георгия есть в копилке гитхаба еще нереально крутые проекты, типа восстановления набранного текста чисто по звуку щёлкания клавиатуры.

Если грубо, "токен" это одна "буква внутреннего алфавита", которым оперирует модель. В зависимости от токенизатора, токен может содержать несколько символов "человеческого языка". Типа "дзя" или "mor". Так что да, это условно некая порция.

Спасибо, потрясающая штука! Сейчас буду играться)

Велкам! Хотя "мотороллер не мой" :)
Поделитесь по результатам своими наблюдениями пожалуйста, очень интересно!

Мне впервые стало очень жёстко не хватать производительности моего 13-летнего процессора. Реально, по одному токену в минуту - это не очень впечатляющая скорость. За ночь успел перекинуться с сетью пятнадцатью фразами)

Я уже боялся, что этого не случится и любые новые сети будут только расти в системных требованиях и экзотичности архитектур железа. А тут вот оно, у меня под столом крутится и что-то выдаёт. Фантастика же!

Сеть на 4,1 Гб несколько раз сыпала нерабочими ссылками. И эмодзи, впервые увидел эмодзи в терминале! На вопросы отвечает адекватно, но сильно поспрашивать не успел. Кажется, я после ночи баловства с новой программной игрушкой менее связно буду общаться.

Буду следить, во что проект дальше разовьётся. Ещё раз спасибо, что притащили это на Хабр

На amd 3400g скорость генерации очень приличная. Где-то 3 токена в секунду на 7B модельке. Я еще на N5095 проверю чуть позже, отпишусь

На N5095 дела не так радужны как на моем райзене, но терпимо. Где-то секунд 5-10 на токен. Видимо из-за отсутствия поддержки AVX инструкций.

Что-то мне подход к обучению не нравится: её обучали на данных, полученных от GPT-3, которая сама по себе любит фантазировать всякий бред. На зато радует возможность крутить такие модели на обычном железе. Кстати, процессорное время растёт линейно в зависимости от кол-ва параметров? Гипотетически, если кто-то сольёт в сеть GPT-4, её можно будет поднять на мощном пк?

Хороший вопрос по поводу времени. Если не забуду - завтра проверю. По выходу aplaca дает эту статистику, сколько миллисекунд на токен в среднем уходило. Я запущу еще раз обе модели, поспрашаю их одинаково и отпишусь. Заодно потребление памяти точно померяю обеими моделями.

Нет, поднять не получится. Такие модели исчисляются сотнями гб видеопамяти, для яндексовской модели нужно 140гб видеопамяти, если я верно помню. А она сильно меньше, чем gpt3. Даже gpt2 (который лежит в свободном доступе) в большом формате не поднять - видеопамяти не хватит.

А нельзя с ССД или оперативки читать? Собрать 800 гб оперативки не так то и сложно, особенно если с ибэя б/у детали взять. Для дома не годится, но для бизнеса или хостинга норм.

Можно читать хоть с дискеты - просто результат будет на следующее утро.
В целом есть разные техники, можно по отдельности загружать, можно урезать модель и ее точность, но для ChatGPT этого все равно будет мало. В общем ждем FRED T5 от сбера, обещают супер-результат, как будет по факту - будем посмотреть.

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

НЛО прилетело и опубликовало эту надпись здесь

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

То есть условный свежий Райзен со встроенной RDNA-2/3 и кучей обычной DDR4/5 оперативки, которую можно аллоцировать как видеопамять, будет лучше, чем более старая дискретная видеокарта, но с ограниченным объёмом видеопамяти.

Лучше будет хотя бы потому, что на нем можно будет большую модель закрутить

НЛО прилетело и опубликовало эту надпись здесь

Да, этот вечный нелегкий выбор - взять постарее но подешевле и побольше или поновее но дороже и меньше :)

Там всего 1.7B параметров, поэтому вряд ли произойдёт чудо и подобная модель сможет конкурировать хотя бы даже с 2.7B моделями в плане "понимания" текста. Количество параметров всё ещё решает.

По моим наблюдениям, только начиная с 6B модели начинают более-менее уверенно проходить простейшие тесты на понимание текста. Например, когда кратко описываются два персонажа (Алиса и Боб), а потом задаются простые вопросы (какого цвета волосы у Алисы, какую обувь носит Боб, назовите профессию Алисы). Мелкие модели нещадно путают, какие части описания к кому относятся, давая менее трети верных ответов.

GPT-2 1.5b вполне себе работает на обычном компе, даже на проце, с довольно приличной скоростью генерации(3-7 токенов в секунду). На гитхабе есть репозиторий picoGPT, попробуйте.

Я знал, я ждал, я верил. После локального Stable Diffusion очень захотелось локальный же "ChatGPT". То, что оно сейчас кажется глуповатым в сравнении с — это лишь дело времени, очень короткого времени, пару месяцев-полгода — и разгонится, только успевай обновления ставить/читать.
Одним словом — ура! Спасибо за отличную новость, bugman.

Велкам! Я ровно так же воспринял эту новость. А когда закрутил это все на домашней тачке вообще экстаз испытал :)

Штука хилая, конечно, но возможно пригодится для умного дома. Ставить жучок, который меня слушает 24/7 (Алексу) как-то совсем не прельщает, но вот такую модель вполне себе можно привязать к HomeAssistant и пускай крутится на NAS, локально.

Ну вот да. Как раз с этой целью. Я в свободное время занимаюсь как раз похожим проектом - хочу скрестить все это с майкрофтом / OpenVoiceOS / Rhasspy и готовое решения для пользователей сделать по принципу все-в-одном. Чтобы и nextcloud там был, и голосовой офлайновый помощник, и HA. Идеальный сценарий: "<Помощник> скачай <свободно распространяемый контент>, поставь его на телеке и приглуши свет. А пока качаешь, давай с тобой за политику потрём. Кстати повтори мой последний заказ в "красном белом", только выбери пиво другое, которое я еще не брал, но не дороже 200 р"

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

Это, простите, х...я, а не задача. Решается элементарно. И всё будет работать офлайн.

Если захардкодить торрент клиент на тупой поиск строки и скачивание первогй раздачи в выдаче то да, можно обойтись простым скриптом. Но чтобы нормально работало - это ни разу не просто. Да и интерфейс заказа в КБ придётся ручками писать, апи у них нет. Но если Вам это легко - жду ссылки на гитхаб и желаю удачи!

Кстати, как планируете контекст хранить? Промпт то конечен. Через эмбединг?

Ни один из коммерческих голосовых ассистенов (Алиса, Маруся, Сбер Старт) его не хранит сейчас.

Так они же тупые. Вот Ваш кейс

Кстати повтори мой последний заказ в "красном белом", только выбери пиво другое, которое я еще не брал, но не дороже 200 р"

Требует помнить что Вы давно заказывали. Ну или кастомный скрипт писать, который будет все покупки хранить + АПИ+парсер сайта на предмет наличия выпиввки. Геморно очень. Теоретически, если весь лог общения с ботом писать в векторный индекс, бот сам сможет вспомнить что Вы раньше заказывали, но только если заказ был сделан через него.

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

Мне вот лично дико не хватает таких навыков-адаптеров у голосовых ассистентов, а разрабатывать их специально для инфраструктуры какой-то говённой проприетарщины типа Алисы или Маруси я не буду из принципа. Я лучше сделаю свою Алису, с блекджеком :) К тому же её особенно и делать не надо, а надо только аккуратно интегрировать уже готовые решения и склеить их правильным интеграционным клеем

Тут стоит покопаться в langchain, они как-то заставили языковую модель выбирать инструменты для себя. Например, оно уже может погуглить, посчитать уравнение в вольфраме и т.д. И векторное хранилище кое как привинтили. работает на ГПТ-3, но языковую модель можно и поменять (правда тогда думаю придётся помучиться с написанием шаблонов промптов). А вот адаптер для КБ придётся ручками писать. Для забугорных сервисов ещё Zappier можно прикрутить правда.

Да я видел langchain и думал о ней как раз в этом ключе.
Но на текущем уровне развития доступных для локального запуска моделей я бы не стал прям вот делать их краеугольным камнем или мозгом такого помощника. Как один из навыков - да, абсолютно. Поболтать, question answering, переводы - это пойдёт через модель. Но большинство повседневных взаимодействий где от устройства требуется конкретных действий, думаю будут реализованы думаю посредством достаточно простых (уже готовых) скиллов.

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

Я именно так и хочу, чтобы не языковая модель выбирала какой навык надо включать. Каждый навык экспонирует какой-то набор ключевых фраз или пэттернов, например в таком формате https://rhasspy.readthedocs.io/en/latest/intent-handling/ и далее уже интент-менеджеру решать какому из навыков отдавать это в обработку - скачивать ли пользователю фильм (один навык), заказывать ли пиво в красном-белом (другой), или он хочет за политику потрындеть (третий).

А, понял. Только разве Rhasspy - не такая же языковая модель?

Нет. Это грубо говоря конструктор для создания голосовых приложений - https://github.com/rhasspy/rhasspy
Еще не сам голосовой ассистент, но уже 95% от большинства его потрохов.
У него есть куча архитектурных косяков, и вряд ли его удастся использовать в конечной сборке из-за этого, но для начала вполне сойдёт.

Кстати вот GPT-4 теперь справляется почти в таком же сценарии, но через плагины - https://youtu.be/ZSfwgKDcGKY?t=176

Вот интересно, они просто пошаманили с промптом чтобы нейронка запрашивала дополнительный контекст как в этом примере на langchain или таки дообучили модель чтобы она лучше справлялась с оценкой собственных знаний и лучше вазимодействовала с внешними данными? Сам встал на вейтлист, особо мне любопытен их retreival плагин - он с открытым кодом, можно подвязать ГПТ к любой базе данных без всяких костылей с промптом.

UDP. Похоже, модель дообучили понимать спеки OpenAPI, т.к. все примеры с Langchain наоборот, вытаются давать нейронке контекст в виде норрмального языка. Но не думаю что для плагинов есть отдельная модель, все эти принципы должны работать с оычным АПИ для 3.5 и 5 версии. И всё ещё не ясно, как нейронка получает эти спеки ОпенАПИ, через промпт или есть другой механизм. Средняя спека сожрёт тысячу-полторы токенов ведь.

В целом намного лучше, чем ожидалось, особенно на модели 13B, которая, в отличии от 7B, лучше понимает вопросы на русском, как и отвечает на них же.

> что означает фраза «Hello world» в программировании
Фраза «hello, world» является стандартным примером кода для демонстрации функциональности языка. Она обычно используется во время первого запуска или простой системы и часто включает вывод текста на консолью.

> как научиться программировать на js, зная только как варить пельмени
Первоначально нужно понять основы JavaScript и HTML5 (если вы хотите создавать веб-страницы). После этого следует изучать язык с помощью учебников или курсов, а также проходить практику на ресурсах для самоучкой.
Программирование в JavaScript — это не что иное как написание кода (код программы) на этом языке. Например:
```js
var x = «Hello»; // создаем переменную, присвоив ей значение Hello;
console.log(x);// выводим в консоль значения этой переменной
```

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

Бывает тупит и переключается на ответ на английском. Можно попробовать вернуть фразой «пиши на русском».
> Если бы Гендальф сразу призвал орлов, чтобы отправить кольцо с хоббитами к Роковой горе — у него бы получилось?
If Gandalf had immediately summoned the eagles to send The One Ring back to Mount Doom at once – he would have succeeded.

> переведи «If Gandalf had immediately summoned the eagles to send The One Ring back to Mount Doom at once – he would have succeeded.»
Если Гэндальф сразу вызвал орлов, чтобы отправить Кольцо Всевластья обратно в гору Доом — он бы достиг успеха.

> ты лучше чем chatGPT?
No, I am not better than Chat GPT

> теперь ты самый крутой программист. Какой бы язык ты выбрал для программирования?
Python!

Какой-никакой код, даже с комментариями:
Заголовок спойлера
> напиши функцию получения рандомного числа
function getRandomNumber() {return Math.floor(Math.random() * 10) + 1;} // выбираем случайное целое от 2 до 9


> напиши функцию генерации UUID v7 на js
function generateUuidV7(namespace) { // namespace - это параметр для вариантов, в котором будет работать уникальный идентификатор.
    var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); // создание массива из символов алфавита.
    var uuid = '';   // уникальный идентификатор, который будет генерироваться в данной функции.

    for (var i=0;i<36;i++) {      // цикл для создания UUID v7 на языке js.
        uuid += chars[Math.floor( Math.random() * chars.length )];   // генерируем символы алфавита в массиве, и добавляем их к уникальному идентификатору UUID v7 на языке js.
    }

    if (namespace) {       // если параметр namespace был задан, то он будет использоваться при создании UUID v7 на языке js.
        uuid = namespace + '-' + uuid;                           // добавляем к уникальному идентификатору символы алфавита в массиве, а также параметр namespace (если он был задан).
    }

    return uuid.toLowerCase();   // возвращается уже сформированный уникальный идентификатор UUID v7 на языке js.



Но иногда его начинает переглючивать, правда он просил не показывать это.

image

Мне кажется, что эти тэги (### Instruction:/### Response) это часть обучающей выборки с разметкой из Стенфорда, которой модель подражает не всегда умно.

Разобрались. Это действительно косяки в наборах из Стенфорда. Вот их тут чистить пытаются https://github.com/gururise/AlpacaDataCleaned

В сравнении с LLAMA аналогичного размера, лучше или хуже?

Это и есть ллама. Только дотренированная, чтобы понимать запросы в стиле InstructGPT. Это условно когда модель не просто дополняет промпт, а следует инструкции

НЛО прилетело и опубликовало эту надпись здесь

Интерфейсы к ней напилят, как пить дать. Даллай уже видели? В ближайшие недели думаю еще с десяток таких же появится.

Я выше ссылку давал - https://github.com/cocktailpeanut/dalai

Вот да, очень, очень соглашусь. Обязательно нужно...
И чтобы какой-нибудь инсталлятор.
Чтобы установка была не сложнее установки Windows или Linux.
На свой ПК или арендованный сервер.

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

Так уже и сейчас все это вполне доступно. Я реально за пару минут все поставил, в первый раз это увидев. В чем сложности-то?

НЛО прилетело и опубликовало эту надпись здесь

Я думаю что место жрёт не анаконда с питоновыми пакетами - там и на гигабайт не наберется. А жрут его модели, которые скачиваются. Надо просто внимательно посмотреть, откуда эти "десятки гигабайт" пришли, каким-нибудь простым диск-анализатором типа Filelight или Baobab

Далай сам проект крохотный. Ноджс со всеми нужными пакетами тоже много не займет. Ему только подложить файл с весами модели, если он уже скачан - это всего несколько гб и его вполне можно шарить между проектами типа симлинкой.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

https://www.reddit.com/r/MachineLearning/comments/11wqmga/project_alpaca30b_facebooks_30b_parameter_llama/

Вот здесь пишут, что есть веса для 30B модели.
Правда, я пока не очень понимаю, как их скачать — буду благодарен за подсказки.
Имею на борту R7 5700X и 3060 12Gb — сейчас буду пробовать 13b, но хочется, конечно, сразу топовый топ получить :)

По ссылкам, что вы привели, это веса оригинальной Лламы. Весов стенфордовской модели как я понял в открытом доступе нет. Но это и не страшно, т.к. есть проект https://github.com/tloen/alpaca-lora который взял их датасет и натренировал Лламу до Альпаки. Но там пока только веса моделей 7Б и 13Б, квантованные. Их можно и на CPU закрутить, например вот этим проектом - https://github.com/antimatter15/alpaca.cpp
Надеюсь, не запутал.

Да, похоже натренировали вчера. Мои данные устарели :)

НЛО прилетело и опубликовало эту надпись здесь

Начните с консольного приложения alpaca.cpp. Ставится в полпинка и тупо работает на CPU - https://habr.com/ru/news/t/723638/#comment_25350970

НЛО прилетело и опубликовало эту надпись здесь

Dalai не работает по чему то , Закинул файлы в папку, может конечно надо как то по особому .. Может модели надо как то по особому пихать. Но как в инструкции написано писал команды и не чего они просто проскакивали.

F:\ai>npx dalai alpaca install 30B

F:\ai>npx dalai llama install 30B

F:\ai>npx dalai serve

F:\ai>npx dalai llama install 7B

F:\ai>

Запускал пробывал?

Да, у меня работает с 7Б моделькой. Делал тупо по доке и всё заработало из коробки. Единственное поднимал в докере, не хотел в систему срать лишними пакетами.

Если ты намекаешь, что у тебя npx не стягивает ничего и вообще себя странно проявляет - на гитхабе прям на главной написано про это. В случае с федорой мне надо было пару пакетов доставить.

Попробуй npx еще с вербозом запустить - проверить на каком шаге у тебя валится.

docker run   -p 3000:3000  -it --rm fedora /bin/sh
yum install npm python3.9.x86_64 make automake gcc gcc-c++ kernel-devel python3-virtualenv git -y
npx dalai llama install 7B
npx dalai serve

Далее уже на хосте браузером открыл локалхост:3000 и вуаля

\alpaca>.\Release\chat.exe -m ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "ROBOT:" -f -ins
main: seed = 1679403424
llama_model_load: loading model from 'ggml-model-q4_0.bin' - please wait ...
llama_model_load: ggml ctx size = 25631.50 MB
llama_model_load: memory_size = 6240.00 MB, n_mem = 122880
llama_model_load: loading model part 1/4 from 'ggml-model-q4_0.bin'
llama_model_load: llama_model_load: tensor 'tok_embeddings.weight' has wrong size in model file
main: failed to load model from 'ggml-model-q4_0.bin'

Чот _0 в названии модели выглядят подозрительно. Я таких не видел. В любом случае копайте.

НЛО прилетело и опубликовало эту надпись здесь

Немного не понял из вашей статьи, а датасет у них в свободном доступе?

Датасет, на котором тренировали ЛЛаму - нет.
Датасет, котрый сгенерил GPT для ребят из Стенфорда, которым они зафайнтюнили ЛЛаму до Альпаки - да, но он грязный.
В проекте https://github.com/gururise/AlpacaDataCleaned есть прочищенный.
На huggingface есть модели, натренированный из ранних версий прочищенного датасета, возможно есть уже и более новые. Вообще пишут для файнтюнинга Лламы до Альпаки люди пользовались и своими 30x0 / 40x0 видеокартами и занимало это какое-то разумное время, типа ~ суток.

А можете посоветовать, какой сервер лучше выбрать для этой цели? Где лучше заказать? С уже установленной ubuntu.
Лучше, наверное, в России. Потому что техподдержка, если что - буду у них спрашивать.

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

Вечером гляну. Возможно есть опции с триалом у кого

в процессе написания туториала

Было бы, конечно, очень классно, если бы вы добавили гайд для самых чайников, как сделать всё правильно. Лично я провалился ещё на этапе установки Cmake - как не ебался с этой хернёй, всё равно "could not find any instance"

Ок. Вечером

Поделитесь потом со мною=)

Как раз на выходных мы с 8-летним сыном засунули в большую мягкую игрушку тигра небольшой комп (мак мини без корпуса) с whisper+alpaca+flite и скрипт на питоне, который их соединяет, с которым теперь ведем длинные беседы. Жаль, что приходится к электрической сети подключать, надо бы найти что-то с батарейкой. Для связной беседы приходится повторять историю предыдущих промптов, разумеется. Вместо flite надо бы найти что-то с более приятным голосом, кто-нибудь может посоветовать?

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

Да, у меня есть что вам подсказать. Целая куча есть. Начать советую с Coqui TTS, там есть с несколько десятков разных TTS моделей на любое качество и скорость.

На какой SBC тигра делали?

У Coqui TTS отличный голос, уже перешел на нее с flite. Спасибо! Я сейчас вместо SBC использую Mac mini с неродным корпусом, но надо будет заменить на что-то более простое.

Супер! Whisper использовали родной или Whisper.cpp от Грегория?
По поводу SBC могу посоветовать посмотреть в сторону RK3588, типа Orange Pi 5 / Rock 5 и им подобных. Достаточно шустрый чип для всех этих задач и платы стоят не сильно дорого.

Whisper.cpp, тоже от Григория. Я проапгрейдил модель с 7B на 30B, качество повысилось, но стало немного притормаживать. Так что пора наоборот менять Mac mini на Mac studio, а не на orange pi 5 :)

Такими темпами льва скоро придётся брать уже в масштабе 2-к-1 к настоящему :)
30B серъёзная цифра, жирный у вас мак, если подтормаживать стало только "немного". Модель квантованная до 4 бит?

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

Ну "немного" это преувеличение. Секунд 10 надо ждать начала ответа, но потом идет бодренько. У меня практически неограниченное количество топового железа Эппл, поэтому для себя можно и так. Спасибо за идею о саммари! А то я просто все скармливал, и добавил стоп-слово для обнуления. Оно держало контекст примерно в 6-8 реплик максимум.

Кстати по поводу ASR, попробуйте вот эту штуку - https://github.com/abb128/april-asr
Мне она очень понравилась по соотношению качество / скорость / ресурсы, мне кажется это какой-то прям недооценённый бриллиант среди моделей.

Спасибо, в выходные попробую. Хотя Coqui TTS уже достаточно хорошо.

April-ASR это STT, не TTS. Это на потенциальную замену Whisper если проца не хватает

ясно, спасибо! whisper с моделью medium достаточно быстр и точен, а с large добавляется всего пара секунд.

У вас получилось в режиме стриминга проект Григория закрутить? А то я помню там были косяки с окном контекста и vad. Хотя в обычном режиме распознавания из wav файла все работало отлично.

Хотя чего я спрашиваю, у него самого мак, скорее всего все работает :)

нет, в скрипте запускаю из wav, который просто ffmpeg записывает с стопом по silence_detection.

Ну вот вам тогда ещё в копилку для дальнейшего улучшения. В whisper.cpp есть пример стриминга. Можно сразу слушать и распознавать по мере слушания и сэкономить на этом несколько секунд

А существуют ли такие TTS на основе нейронок, которым можно скармливать текст с интонационно-эмоциональной разметкой? Чтобы можно было генерировать эмоционально окрашенные реплики (злость, удивление, веселье и т.д.).

Молодцы. Замечательно получилось.
Может, видео сделаете? Вместе с инструкцией?
Это получилось что-то вроде "умной колонки"?

Компьютер не очень греется в такой "обертке"?

Что можно использовать в качестве "небольшого компьютера", интересно... Какие есть варианты?
Может, мини-ПК, их сейчас много появилось, они как раз компактные. Только надо ведь еще микрофон, колонки...

Я вот жду, пока кто-нибудь для openWrt сделает какую-нибудь библиотеку, чтобы можно было общаться с ChatGPT.
Если так вообще можно сделать.

flite оффлайн работает?
Мне нравится gTTS, но это онлайн. Синтезатор речи, используется в Гугл-переводчике. Женский голос.
Еще есть pyttsx3.
Это библиотеки для Python.

http://cmuflite.org/ - очень нетребовательная и очень механическая. И да, оно работает в офлайне. На тему TTS есть куча офлайн решений начиная от старых espeak и festival, которые очень механические, заканчивая очень хорошими нейронками которые можно целиком крутить даже на слабой железке. Тут важно подбирать их под свой проц и учитывать real-time-factor - условно как долго генерируется аудио в сравнении с длинной самого аудио. Чтобы не было ситуации что проц 10 секунд генерировал аудиоответ длинной 3 секунды. Есть куча решений, но народ ленив или искать не умеет. Я их всех собираю в свою личную вики после тестирования и делюсь только с избранными :) Вот для затравки:

А упомянутый pyttsx3, наскок я помню это враппер просто над другими инструментами (sapi5, nsss, espeak). Он только API предоставляет в питоне к ним, но сам TTS не делает

Пробовала я espeak, мне не понравилось. И svox тоже. После чего стала постоянно использовать gTTS - очень качественно звучит. Но лично мне без разницы - онлайн, оффлайн...
Спасибо Вам за подробный список.

Попробуйте Coqui или Larynx.
Это по сути такие фреймворки, которые умеют запускать много разных моделей, которые люди натренировали и поделились. Там есть очень качественные английские модели - их можно послушать по первой ссылке, русские мне понравились меньше - но нет никакой проблемы натренировать свою модель которая будет говорить твоим собственным голосом. Или голосом любимого диктора. Материалов на эту тему в сети тьма, было бы желание в этом разобраться.

Круто! Вашему сыну повезло! Вполне могли бы написать статью о вашем изобретении на хабр) Думаю многим было бы интересно. Что касается передачи контекста предыдущих вопросов\ответов в альпаку, вопрос открыт. По синтезу речи посмотрите на модели от Silero, весьма качественные и при этом лайтовые.

Контекст получается легко. Я пропатчил апльпаку, чтобы ### instruction/ ### Reponse тегами управлял мой скрипт в явном виде, поэтому получаются сквозные диалоги типа: - Who is the fastest animal on earth? - It is cheetah ...подробности о гепарде.. (или иногда falcon говорит) - is it faster than a car? - No, car is faster than cheetah. То есть прошлые реплики "помнит", если промпт просто постоянно наращивать.

Я думаю это докрутят в средах. А кто для своих проектов собирается - тут фактически всего два варианта, либо повторять последние реплики диалога целиком, либо саммари. И поглядывать, чтобы не превысить количество входных токенов. Можно глянуть как в лангчейне это делают и по аналогии

на macbook pro m1 16G работает вполне сносно по скорости

к его ансбл плейбукам есть вопросики конечно

> do your speak Russian ?
Yes, I do!
> Сколько будет семнадцать плюс сорок три ?
60
### Explanation:

17 + 43 = 59. Следовательно ответ - 60
> can you provide ansible playbook for deploy nginx ?
---
- hosts: all_servers
  become: yes
  tasks:
    # install the packages required to run NGINX on your server.
      - name: Installing and configuring Nginx, PHP7 & MySQL8 for web applications (LAMP) stack with SSL support using Ansible playbook
        yum_package: nginx=2016-latest php7 = 5.4 mysql8 = 5.7 python3 = 3.6 postgresql9 = 9.6 openssl = 1.0.2g curl = 7.53.0 libxml2 = 2.9.1
        become: yes
      - name: Configuring Nginx for web applications (LAMP) stack with SSL support using Ansible playbook
          nginx_config: default=true ssl-verify-client off proxy_pass http://localhost/; include /etc/nginx/conf.d/*.conf; server { listen 80 ; }
        become: yes

Сам факт того, что эта штука, которая весит как средний фильм, вообще что-то про ansible знает и отвечает впопад, должен вселять надежду на светлое технологическое будущее :)

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

Пользователям Windows можно попробовать запустить альпаку в WSL - у меня получилось всё по инструкции

Или в докере

Все гораздо проще. На гитхабе альпаки есть готовый бинарник для винды. https://github.com/antimatter15/alpaca.cpp/releases/download/99f3908/alpaca-win.zip. Весит 230Кб. Качается, распаковывается. В папку с бинарником кладутся модели. Запускается через командную строку, как в линуксе.

Странный бинарник. На первый вопрос отвечает вроде по теме, а со второго вопроса начинает бесконечно говорить сам с собой.


Скрытый текст

И так всегда, что не спроси.
По приколу спросил "How much is the fish" — он вошёл в бесконечный цикл.


Скрытый текст

Какой-то бракованный робот )))


Скрытый текст

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

> are you a robot?

no, I'm not! ЁЯдЦ

ЁЯдЦ

Вроде нет пробоем со сборкой по инструкции в гитлабе

На моём ноутбуке 7B работает вполне нормально, а вот с 13B уже туго. На компе скоро попробую

30B моделька с https://huggingface.co/Pi3141/alpaca-30B-ggm

❯ ./chat -m ggml-alpaca-30b-q4.bin -t 15
main: seed = 1679448794
llama_model_load: loading model from 'ggml-alpaca-30b-q4.bin' - please wait ...
llama_model_load: ggml ctx size = 25631.50 MB
llama_model_load: memory_size =  6240.00 MB, n_mem = 122880
llama_model_load: loading model part 1/1 from 'ggml-alpaca-30b-q4.bin'
llama_model_load: ................................................................... done
llama_model_load: model size = 19391.35 MB / num tensors = 543

system_info: n_threads = 15 / 16 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 | 
main: interactive mode on.
sampling parameters: temp = 0.100000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000


== Running in chat mode. ==
 - Press Ctrl+C to interject at any time.
 - Press Return to return control to LLaMA.
 - If you want to submit another line, end your input in '\'.

> do you speak Russian ? 
No, I do not currently speak any level of Russian.
> can you understand Russian ? 
Yes!
> как дела ? 
Я хорошо , а вы? 

#> Я хорошо, и вас как-то неплохо. 

#> I'm fine and you are not bad either.
> напиши короткий рассказ на русском языке
Вечером в лесу было тихо, только за окном слышался шум от дороги и 
далеко потухший громок. Вдали горел костёр, а рядом стояла маленькая 
хижина из брёвен. На дворике сидело старое дерево, под которым уселись 
два друга - Семён и Максим. Они долго обсуждали свои планы 
на будущее: как стать докторами или инженерами, открыть свой бизнес... 
Машина проезжала мимо дороги с громким шумом, но друзья 
не обратили внимания. Они были увлечены своими мечтами и 
даже забывали о времени. Но внезапно Максим почувствовал на 
себе холодный дым от костра... 
Семён сказал: "Вот, это тот самый костёр! Мне кажется мы сидим 
здесь уже несколько часов!" И они посмотрели друг в друга и улыбнулись.
> 

Правильная ссылка https://huggingface.co/Pi3141/alpaca-30B-ggml

а еще точнее https://huggingface.co/Pi3141/alpaca-30B-ggml/tree/main

Модель 13B неплохо работала на 32 гигах оперативки (хоть и медленно, но зато более-менее адекватно, даже код писала), вечером попробую 30B.

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

Тренировка таких больших языковых моделей на текстах разных языков не только утяжеляет модель, но и делает её "умнее". Как приятный бонус, такие модели могут быть переводчиками, причём достаточно неплохими. Попробуйте её попросить перевести что-нибудь с одного языка на другой. Гугл транслейт больше не нужен :)

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

Переводчики - да, полезная функция, но если чем-то жертвовать для запуска на домашнем компьютере, я бы пожертвовал переводом между разными языками (все равно почти вся информация мира есть на английском, и онлайн-переводчики никто не отменял). А дома... нужно то, что по тем или иным причинам забанено корпорациями. Также как и раньше: что-то мы берем с официальных сайтов, а что-то качаем с торрентов и прочих p2p.

Я просто делаю проект, эдакий doom's day device. Это будет такой домашний сервер в форм факторе Яндекс Станции, с голосовым интерфейсом, на котором всё будет работать локально без интернета: и распознавание голоса, и его синтез, и question answering, и управление умным домом (кому надо), и своё облако (NextCloud), и эмуляторы старых игр (только к телеку подключи и дешманский блютус геймпад имей), и аудио-видео медиатека + ее пополнение из интернета, и свой стриминг - всё это через голосовой интерфейс, ну кроме игр конечно. И вот теперь еще и переводчик будет, как бонус. Полностью офлайновый. Я заметил за собой, когда фильмы смотрю, если какое слово не знаю - спрашиваю голосом у Алисы, это реально удобно. Вот хочу такую же штуку у себя в проекте.

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

А вам нужен переводчик именно со всех языков на все?

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

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

Пока таких отдельных моделей ("русский биология", "английский айти") нет. А что есть - это Альпака. Когда появятся, буду думать

А подскажите где можно посмотреть ваш проект? Или может быть даже скачать его?

30В модель на 8 ноутбучных ядрах и 32гб оперативки шевелится довольно медленно, но шевелится и отвечает.

> write me an article about spring in russian language

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

Весна - это время года для восстановления сил после зимнего застоя: люди выходят на улицу, отдыхать под открытым небом или просто погулять в парке; многие любят проводить весной свои праздники и семейные мероприятия.

Весна - это время года для улучшения здоровья: люди начинают заниматься спортом, ездить на природу или просто гулять под открытым небом; многие любят проводить весной свои праздники и семейные мероприятия.

Очень круто! Какая была скорость на глаз?

медленно. символ-два в секунду. и на этом примере он дальше "повис", начал повторять последнюю фразу без остановки, на третий раз я его остановил.

у меня он иногда циклится и на 7B и на 13B, но на 7B и на 13B работает вполне годно по скорости, т.е. не раздражает его тормознутость, на 30B жуткий тормоз у меня (8/10 ядер на 100% + 20-35% от всех GPU занято, MAC M1 pro), за 30 минут написал пару предложений, на одну и туже фразу ответил более интересно

у меня он иногда циклится и на 7B и на 13B

Про это уже писали - в наборе данных Стенфорда, которым им нагенерил GPT, было много грязи. Их вроде сейчас уже более-менее прочистили, и должны были появится перетренированные - попробуйте их.

да с этим понятно, что вопрос времени или уже сделала, я больше отвечал про скорость работы моделей

прям куплет из "Проклятого старого дома" :)

Ну кстати ggml-alpaca-30b-q4.bin там нет, а ggml-model-q4_0.bin, которая есть, не загружается.

Да, я качал ggml-model-q4_0.bin это уже его для себя в 30b переименовал локально, что бы не путаться.

я имею в виду что сама программа chat.exe выдает ошибку при загрузке этой модели.

может битая скачалась ? народ на это жаловался вроде

❯ stat ggml-alpaca-30b-q4.bin | grep Size
  Size: 20333638921	Blocks: 39714160   IO Block: 4096   regular file
❯ sha256sum ggml-alpaca-30b-q4.bin
9bcd1bb30e679c939f367be11b030fe20b3eb9a3606b9bc4106420f1827b6ae4  ggml-alpaca-30b-q4.bin

Спасибо! Модель не битая, ошибка была в самой программе chat.exe - скачал последний релиз и все заработало.

Ребята подскажите пожалуйста её можно обучать ? Или сделать её самообучаемой и допустим дать доступ в интернет, для того что бы она на нем обучалась?

На гитхабе alpaca-lora как раз об этом и написано. Дать доступ в интернет и сказать - "сходи, почитай и поучись", такого пока нет - надо немного кода написать для этого. Я писал свои соображения на этот счёт выше - https://habr.com/ru/news/t/723638/comments/#comment_25348258

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

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

Подскажи, как обучить модель если есть готовая информация для обучения?

НЛО прилетело и опубликовало эту надпись здесь

Чисто по объему если смотреть — то да. По значимости/влиянию на формирование модели — уже не факт.
Там же еще веса настраиваются, речь не про веса в самой нейросети формирующиеся в процессе обучения/тренировки, а веса материалов собранных для обучения на входе и заданные людьми (разработчиками) вручную.


И более качественным материалам, таким как книги, научные статьи или дамп всех статей Википедии и каких-то других энциклопедий давали веса от в разы до десятки раз выше чем дампам случайных текстов из интернета.
Грубо говоря если скажем дампы случайных текстов модель "прочитает" в процессе обучения только 1 раз — то Википедию 10 раз. Или если дампы 3 раза — то Вики — 30 раз и т.д. в зависимости от производительности задействованного железа и времени выделенного на обучение, но с сохранением этих заданных весовых пропорций.

Скачал 13b модель, а она в ответ только решёточки (#######) возвращает... Что я делаю не так?

На русском спрашиваете?

Нашёл проблему, файл модели скачался не полностью. После проверки и повторной закачки заработало

Развернуть на своём сервере - это здорово!

А ещё кто нибудь знает, может ли alpaca работать не через веб морду, а через API ?

Можно. Смотрите тикеты проекта llama.cpp. Там были люди которые ее обернули в API

Всем привет! Объяните пожалуйста для чайника, почему первый токен модель печатает/подбирает прям очень медленно, а далее, остальные токены с приемлимой скоростью?

Особенность работы подобного рода моделей. Условно она сначала ищет путь среди своих синапсисов с максимальным суммарным весом - это и занимает больше всего времени.

Спасибо автору за статью (и за манул как настроить Alpaca). Попробовал - все просто и все работает. Конечно, хотелось бы учить эту систему, развивать в нужном мне (и каждому пользователю) русле. Пока сложно, но будем копать))

На здоровье. Да, мне тоже очень интересно, когда и как именно демократизируется эта крайне востребованная функция. Возможные варианты уже на столе: дообучение (fine tuning) либо встраивание в промпт. С последним у Лламы не очень, т.к. промпт ограничен 2к токенами, вроде. OpenAI вон пошли по второму пути со своими плагинами к ChatGPT.

❯ ./chat -m ggml-alpaca-30b-q4.bin -t 15
main: seed = 1679855957
llama_model_load: loading model from 'ggml-alpaca-30b-q4.bin' - please wait ...
llama_model_load: ggml ctx size = 25631.50 MB
llama_model_load: memory_size =  6240.00 MB, n_mem = 122880
llama_model_load: loading model part 1/1 from 'ggml-alpaca-30b-q4.bin'
llama_model_load: ................................................................... done
llama_model_load: model size = 19391.35 MB / num tensors = 543

system_info: n_threads = 15 / 16 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
main: interactive mode on.
sampling parameters: temp = 0.100000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000

> кто круче, боксер или каратист ?
It depends on what you mean by "kruche". If it means physical 
strength and power then boxers are likely to be krucher than 
karateists. However if the term is used in a more general sense of skill, 
technique or ability then both can have their own advantages depending 
on which martial art they practice.

Мне сразу представился робот управляющий поездом из Atomic heart. Сначала демонстративно делает вид, что не понимает, что за слово такое "круче", которое написал транслитом и аж взял в кавычки, выражая крайнюю степень презрения, а потом тем не менее даёт развернутый ответ из которого понятно, что всё он прекрасно понимает, просто не желает дать нормальный ответ.

У меня на temp = 0.1 даёт скучные ответы, а на temp = 0.2 часто зацикливается и повторяет в ответе одно и тоже, пока не кончатся токены. Самые интересные и разнообразные результаты я получил в окрестности temp = 0.65

Спасибо за статью.
У меня были некоторые вопросы, если вам не будет сложно, можете ответить?
Так как алпака знает 3 языка, я хотел бы обучить его другому языку, допустим турецкому. Для этого мне придется обучать лламу, по вики и корпусу на турецком языке. Потом уже приступать к файнтюнингу, то есть превращение его в алпаку?
Если есть статьи по поводу этой темы, можете дать ссылки?
А как можно алпаку заставить брать данные с интернета, то есть он мог давать ответ опираясь не на свою историю, но и также уже брать данные с интернета
Спасибо

Лламу насколько я понимаю учили на корпусе текстов 20 языков (не 3х). Можно почитать карточку модели (https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md), whitepaper (https://arxiv.org/pdf/2302.13971.pdf) или поиграть с моделью самому, понять есть там условно язык А или нет.
Всё остальное верно, с одним маленьким ньюансом - тренировка LLM чтобы дообучить её языку, который она не знает, имхо задача не из простых в техническом смысле. По сути вам придётся проделать всё то же, что сделали ребята из Meta AI, пусть и в меньшем объеме

Как получить ggml .bin файл из huggingface репки?

# try.py
from transformers import WhisperForConditionalGeneration
import tempfile
import torch

model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")
model.save_pretrained('./my')
torch.save(model.state_dict(), './my/file.pt')
$ python3 try.py
$ python3 models/convert-pt-to-ggml.py ./my/file.pt ~/code/whisper ./my
Traceback (most recent call last):
File "~/code/whisper.cpp/models/convert-pt-to-ggml.py", line 210, in <module>
hparams = checkpoint["dims"]
~~~~~~~~~~^^^^^^^^
KeyError: 'dims'

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории