После публикации https://habr.com/ru/news/t/723638/ меня попросило несколько человек написать гайд для новичков, как же это всё запустить поиграться где-нибудь на арендованном сервере, если локальная машина не позволяет?

Чтобы закрутить альпаку нам нужно 4.5 Гб оперативы минимум для 7B модели + еще сколько нибудь для системы. Будем смотреть на любые предложения хостеров, которые предлагают виртуальные серверы в конфигурации от 6 Гб оперативки и 4+ ядра. Для простоты я возьму reg.ru лишь только потому, что них есть почасовая оплата и для наших простых экспериментов это сгодится.

Идем на https://www.reg.ru/vps/linux, тыкаем на Base-8 выбираем Ubuntu 22.04, помесячную оплату не включаем, платим 100 рублей, ждём когда у них голубиной почтой прососётся наш платёж и личный кабинет обновится. В итоге наш свежеарендованный сервер должен появится в панели "Мои ресурсы" -> "Виртуальные серверы" и иметь статус "Активен". У меня от платежа до статуса "Активен" прошло минут 10.

Ищем в своей почте письмо от reg.ru с темой "Создан сервер ...." в котором нам надо:

  • пароль для пользователя root

  • IP адрес вашего сервера Держим эту информацию под рукой.

Щёлкаем на свой свежесозданный сервер в личном кабинете, в меню справа выбираем "Открыть консоль". Если у вас откроется консоль - вводим имя пользователя - root, пароль из письма и пропускаем следующий абзац.

У меня эта консоль сразу не заработала, только на следующий день. И даже когда заработала, работала с перебоями. Поэтому мы качаем ssh клиент под названием Putty с официального сайта. Обязательно с официального, если не хотите себе вместо Путти трояна поставить.Открываем Putty, вбиваем туда IP адрес своего сервера. Жмём кнопку "Open", на все всплывающие предложения соглашаемся, вводим имя пользователя root и пароль из письма.

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

root@123-23-45-678:~#

Внимательно читаем, что происходит на экране после каждой команды.

Итак, команды:

# disable OOM killer
sysctl -w vm.oom_dump_tasks=0

# update, upgrade and install needed packages
apt update
apt upgrade -y
apt install build-essential python3-venv git gcc g++ make rtorrent curl wget -y

Начнём с самого простого, с установки проекта https://github.com/antimatter15/alpaca.cpp

git clone https://github.com/antimatter15/alpaca.cpp
cd alpaca.cpp
make chat
# download 7B model
wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
./chat
# if you want 13B model:
# wget https://gateway.estuary.tech/gw/ipfs/Qme6wyw9MzqbrUMpFNVq42rC1kSdko7MGT9CL7o1u9Cv9G
# ./chat -m ggml-alpaca-13b-q4.bin

Теперь можно початиться с Альпакой. Помним про апдейты к новости https://habr.com/ru/news/t/723638/ - ребята из Стенфорда конечно умнички, но данные, которые им нагенерировала GPT, и которыми они обучали Лламу до Альпаки, оказались с "приколами". Поэтому модель не всегда адекватна в ответах.

Начатились? Жмём CTRL+C и читаем дальше.

Можно попробовать поставить проект https://github.com/cocktailpeanut/dalai/
Сейчас мастер ветку штормит, поэтому наши шансы тут 50/50.
Если какие-то команды будут спрашивать подтверждения, вводим "y" и жмём Enter.

# install Node 18 LTS
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - 
apt install -y nodejs

# before we move any further, test versions of python3 (should be <=3.10) and node (should be >18)
python3 --version
node --version

# considering #issues/209
npx --verbose dalai@0.3.0 alpaca install 7B
rm -rf ~/dalai/
mkdir -p ~/dalai/alpaca/models
npx --verbose dalai@0.3.0 alpaca install 7B

# run the server, leave it hanging
npx --verbose dalai@0.3.0 serve

Последняя команда вернуть вам управление не должна, так и задумано.
Открываем браузер на своей машине и вводим в нём http://айпиадресвашегосервера:3000

Помним, что мы не настраивали ни TLS, ни какой-либо аутентификации и любой, кто найдёт эту вашу веб морду, будет с ней играться вволю за ваш счёт. Так же мы не настраивали автозапуск даллая и не делали из него сервиса, так что если ваш арендованый сервер перезапустится или оборвётся ваша ssh сессия, надо будет снова зайти на него и запустить последнюю команду.

В моём случае, при начальной настройке-установке, SSH соединение со скотским reg.ru постоянно зависало, будьте готовы к таким приколам и вы. Если ssh сессия оборвалась или кажется что зависла, закрываем сессию, открываем новую и продолжаем с того же места, на котором зависло. Если у кого-то что-то не получилось, дневник съела собака, выкладывайте логи в комментарии: младшеклассникам возможно помогут старшеклассники.

Продвинутым линукс пользователям я бы предложил использовать screen, особенно на этапе npx dalai@0.3.0 alpaca install 7B чтобы эта долгая активность не обрывалась каждый раз, когда вы вынуженно отваливаетесь / запускать через nohup и мониторить скачивание второй сессией. Но продвинутые, думаю, и без моих советов справились уже все. Остальные просто пытайтесь снова и снова, кляните рег.ру и теребите их техподдержку за отваливающийся ssh.

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

Всем добра и удачи. Учите линукс и поддерживайте опенсорс - за этим будущее.

P.S. Dalai не самый лучший веб интерфейс, и писали его явно товарищи из Индии, судя по определенным особенностям его работы. Если вас заинтересовала эта тема веб чатов, инвестируте своё время, чтобы поставить что-то более продвинутое типа https://github.com/oobabooga/text-generation-webui или https://github.com/spv420/chatgpt-clone

Апдейт от 23.03.2023
Если кто-то хочет, можно еще закрутить alpaca.cpp (или llama.cpp, что почти то же самое) на своём Android мобильном телефоне. Инструкции есть и на сайте и @alexander222 ниже в комментариях показал как. Учитывайте, оперативной памяти на мобильном должно быть прилично, у некоторых на 6 Гб не запустилось.

Апдейт от 24.03.2023
Без установки с 7B моделькой можно поиграть здесь - https://huggingface.co/spaces/tloen/alpaca-lora (см. детали в проекте https://github.com/tloen/alpaca-lora). Но как и всё бесплатное, возможно придётся постоять в очереди. После нажатия на Submit обращаем внимание на queue X/Y в правом верхнем углу окна с результатамм. Х - это наша позиция в очереди, Y - ее длина


Комментарии (31)


  1. vvzvlad
    00.00.0000 00:00

    А как оставить модель на диске при обновлениях? Чтобы не скачивать каждый раз 50гб


    1. bugman Автор
      00.00.0000 00:00

      Предложенная мною в гайде модель 7B весит всего 4 Гб. Где вы 50 увидели?


      1. vvzvlad
        00.00.0000 00:00

        Я 13B качаю


        1. bugman Автор
          00.00.0000 00:00

          Самое простое - перенесите её куда-нибудь в другое место (mv source destination) а на старое место положите симлинку (ln -s model_file_location place_to_put_simlink)

          13B не весит 50 если что. Она весит гигов 8. Вы явно что-то не то скачиваете.

          И еще вопрос: при какого рода обновлениях вы боитесь потерять модель?


          1. vvzvlad
            00.00.0000 00:00

            Самое простое — перенесите её куда-нибудь в другое место (mv source destination) а на старое место положите симлинку (ln -s model_file_location place_to_put_simlink)

            Не, я вот хочу с нуля поставить все, допустим. Но у меня уже скачанная модель есть. Запускаю llama install 13B и она начинает качать модель.


            Full: The model takes up 60.21GB
            Quantized: 4.07GB * 2 = 8.14GB

            А, ну видимо 8, да.


            1. bugman Автор
              00.00.0000 00:00
              +2

              Сорри ночь на дворе, я не в кондиции. Почему llama? В гайде лламу я не предлагал ставить, только альпаку.

              И воообще, проект далай очень кривой. Если глянете на их issues на гитхабе поймете о чём я. Все вопросы связанные с Далаем лучше туда.


  1. alexander222
    00.00.0000 00:00
    +7

    для поиграться сервер не нужен. На удивление легко собралось и быстро работает на телефоне в termux. Последовательность примерно такая:

    pkg up
    pkg install wget git make clang

    а дальше по инструкции из статьи

    git clone https://github.com/antimatter15/alpaca.cpp
    cd alpaca.cpp
    make chat
    # download 7B model
    wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
    ./chat


    1. bugman Автор
      00.00.0000 00:00
      +1

      Александр, гайд просили люди, у которых старые слабые компы. Я думаю телефоны у них такие же


      1. alexander222
        00.00.0000 00:00
        +2

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


        1. Javian
          00.00.0000 00:00
          +3

          Тот случай когда 128 Гб флешпамяти и кучу ядер в новом телефоне можно объяснить какой-то пользой.


        1. bugman Автор
          00.00.0000 00:00

          Да, вы правы. Сейчас же даже в середняки по 4× гб пихают. Сколько оперативки в вашем телефоне, для понимания? Как шустро работает модель?


          1. alexander222
            00.00.0000 00:00
            +1

            12гб (xiaomi 11t) работает быстро, ответ на запрос tell me about alpacas начинает выдавать чере ~4 секунды


            1. Heavyiron
              00.00.0000 00:00

              А на моем redmi note 10s с 6 Гб оперативы termux вылетает после загрузки любой модели. Копал в сторону phantom process killer - безрезультатно. (


              1. bugman Автор
                00.00.0000 00:00

                Спасибо, что поделились. Обновлю гайд


  1. j-b
    00.00.0000 00:00
    +1

    А все это дело завернуть в docker? Или, может уже есть образ?


    1. bugman Автор
      00.00.0000 00:00

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


  1. Lagovi
    00.00.0000 00:00

    Интересно, у этого есть практическое применение? Или только образовательно-исследовательское? Например, ChatGPT отлично делает рерайт, сносно пишет тексты, хорошо переводит. А с альпакой что?


    1. bugman Автор
      00.00.0000 00:00

      Грубо говоря, область применения такая же, как и у ChatGPT, с поправкой на локальность и то количество ресурсов (или времени) которые вы ей дадите:

      Q: what is the deep learning and why it is so different from machine learning?
      Deep Learning (DL) refers to algorithms which are able to learn complex relationships between data points, while Machine Learning (ML), on the other hand, focuses more narrowly on predicting outcomes based upon known patterns. DL can be used for tasks such as image recognition and natural language processing where ML is not applicable due to its inability to handle non-linearity of real world problems.
      Q: how do I see in Linux if my processor is supporting advanced vector instructions (AVX)?
      The easiest way would be using the lscpu command, which will show you all kinds of information about your system's hardware and software configuration including whether or not it supports AVX.
      Q: Rewrite the following sentence: quick brown fox jumped over the lazy dog.
      The fox ran quickly past a sleeping canine, which was too tired to get up from its nap in time for dinner.


    1. microArt
      00.00.0000 00:00

      "Интересно, у этого есть практическое применение?"

      Мне про тигра понравилось. Как говорящая игрушка - просто замечательно.


  1. Nicholas
    00.00.0000 00:00
    +2

    Есть ещё alpaca 30B модель через install 30B не ставится, но можно скачать вручную и положить в ~/dalai/alpaca/models/30B

    magnet:?xt=urn:btih:6K5O4J7DCKAMMMAJHWXQU72OYFXPZQJG&dn=ggml-alpaca-30b-q4.bin&xl=20333638921&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce

    Или через hugginface https://huggingface.co/Pi3141/alpaca-30B-ggml


    1. Nicholas
      00.00.0000 00:00

      Дополню. Протестировал большую модель, честно сказать я приятно удивлён, на 2678v3 работает довольно шустро, требует 20GB оперативки. Но самое главное - качество ответов, оно на мой взгляд очень хорошее, или может быть я такой везучий и задаю правильные запросы, но в ситуации 1 вопрос - 1 ответ очень похоже на качество chatgpt. Иногда начинает выдавать ерунду, но я останавливаю вывод и заново тот же запрос и не придраться.


      1. bugman Автор
        00.00.0000 00:00

        Оч круто. Приведите парочку примеров сюда, если не затруднит. Надо на оставшиеся 70 рублей на VPS шикануть и взять памяти поболее чтобы и большую модель покрутить тоже для сравнения.


        1. Nicholas
          00.00.0000 00:00

          Я даже не знаю, что привести в пример, потому что практически всё что я пробовал из https://github.com/f/awesome-chatgpt-prompts выдаёт адекватные ответы, но нужно задавать правильно, например

          Below is an instruction that describes a task. Write a response that appropriately completes the request.

          I want you to act as an English translator, spelling corrector and improver. I will speak to you in any language and you will detect the language, translate it and answer in the corrected and improved version of my text, in English. I want you to replace my simplified A0-level words and sentences with more beautiful and elegant, upper level English words and sentences. Keep the meaning same, but make them more literary. I want you to only reply the correction, the improvements and nothing else, do not write explanations. My first sentence is "Мой кот прикольный малый, но он боится есть"

          My cat is adorable, but he's afraid to eat.

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

          Below is an instruction that describes a task. Write a response that appropriately completes the request.

          I want you to act as a virtual pharmacist and biochemist. I will ask questions about drugs or symptoms and you should give the most complete scientific information on this issue.

          Write a list of the most effective drugs for senile hearing loss that have a synergistic effect with idebenone.

          Вывод приводить не буду, он каждый раз разный, но верный и этих примеров в обучающей выборке alpaca точно нет, т.е. нейросеть знает всё это, и это фантастика.

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

          Topic: biochemistry, pharmacy, medical science. Article: Inositol in relation to hair health.


  1. domix32
    00.00.0000 00:00

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

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


  1. microArt
    00.00.0000 00:00
    +1

    Спасибо Вам за такое подробное описание. Как раз то, что надо. Добавила в закладки.
    С оборудованием у меня и правда, не густо. Поэтому и спросила о таком варианте.


    1. bugman Автор
      00.00.0000 00:00

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


    1. bugman Автор
      00.00.0000 00:00

      Обновил статью. Появились бесплатные варианты онлайн, если только поиграться хочется


  1. rencom66
    00.00.0000 00:00

    А она на русском умеет ?


    1. bugman Автор
      00.00.0000 00:00

      Умеет, и чем больше модели тем лучше


  1. mrfirefox
    00.00.0000 00:00

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


    1. bugman Автор
      00.00.0000 00:00

      Да, я писал об этом - https://habr.com/ru/news/t/723638/