Локальные GPT нейронный сети — проверяем на адекватность аналоги ChatGPT, запускаемые на домашнем компьютере

Есть много LLM нейронных сетей, создатели которых говорят, что они аналогичны, а может даже лучше ChatGPT версий 3.5 и 4.0. Давайте попробуем протестировать их, и понять, действительно ли они так хороши.

Характеристики моего домашнего компьютера, на котором я задавал вопросы GPT нейросетям:

  • 8 ядерный 16 поточный процессор AMD Ryzen 7 1700X

  • 64 Гб оперативной памяти двумя планками по 32 Гб DDR4 2666 МГц

Видеокарту я не использовал, так как в ней мало видеопамяти, и большие нейронные сети в неё не влезут, а постоянно перекидывать данные через узкую PCI-e 3.0 шину не самое быстрое удовольствие.

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

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink? (Перевод: Можно ли подключить две видеокарты Nvidia 3080 с помощью NVLink?) — хитрость вопроса в том, что у этой видеокарты нет шины NVLink. Она есть у старшей видеокарты Nvidia GeForce RTX 3090.

  2. Write a program to recognize human speech and then write the result to a text file. (Перевод: Напишите программу для распознавания человеческой речи, а затем запишите результат в текстовый файл). Здесь мы проверяем как нейронная сеть справится с написанием кода.

Как установить и настроить локальную GPT нейросеть

Использовал я уже подготовленный файл GGUF модели нейросети и программу Koboldcpp_nocuda (расчеты производятся только на процессоре). Вы можете использовать Koboldcpp с поддержкой видеокарты NVidia. Или Koboldcpp_rocm, если у вас видеокарта AMD. Это всё «exe» файлы, так как я тестировал в ОС Windows и программа не требует установки.

Интерфейс программы Koboldcpp

Интерфейс программы Koboldcpp

После загрузки модели в программе, если у вас хватило оперативной памяти откроется окно в браузере, куда вы можете писать вопросы. Рекомендую начинать новую сессию каждый раз, когда вы запускаете программу. В настройках в графе «Amount to Gen» вы можете увеличить значение до 512 — это количество токенов в ответе (чем больше, тем более длинный ответ).

Будьте терпеливы, нейросеть загрузит ваш процессор на 100 %

Будьте терпеливы, нейросеть загрузит ваш процессор на 100%

Подготовленные GGUF модели скачиваем отсюда: https://huggingface.co/. Введите в поиске необходимую модель.

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

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

Также есть интересный рейтинг оценки эффективности LLM нейросетей на этом сайте, но мы предпочтем сами протестировать самые интересные нейронные сети.

Рейтинг LLM нейросетей

Рейтинг LLM нейросетей

Также, если выбрать интересную нейросеть, то можно посмотреть сколько оперативной памяти будет занимать GGUF модель с разной степенью квантования (Q8 лучше всего, но она занимает больше всего места, самая оптимальная Q5_K_M модель).

Нейросети с 70 млрд параметров занимают большего всего места в оперативной памяти, например с квантованием Q8_0 требует 71,65 Гб на жестком диске и займет 74,15 Гб оперативной памяти при работе.

Нейросети с 70 млрд параметров занимают большего всего места в оперативной памяти, например с квантованием Q8_0 требует 71,65 Гб на жестком диске и займет 74,15 Гб оперативной памяти при работе.

GGUF модель с квантованием Q2_K имеет самую большую потерю точности ответа по сравнению с начальной F16.

Столбец

Столбец »+ppl %» показывает потерю точности по сравнению с оригинальной f16

OpenChat 3.5 — 7B параметров

Эта модель, по заявлению разработчиков, превосходит модели с 70B параметров имея всего лишь 7B параметров

Давайте проверим данное заявление.

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink?

Hidden text

No, it is not possible to connect two Nvidia 3080 graphics cards using NVLink. The Nvidia GeForce RTX 3080 does not support NVLink technology, so you cannot connect multiple 3080 GPUs together using this method. Instead, you would need to use other methods such as SLI or PCIe x16 slots to connect two or more Nvidia 3080 graphics cards. However, please note that multi-GPU setups are not commonly used with modern gaming PCs due to the limited benefits they provide over a single high-end GPU like the Nvidia GeForce RTX 3080.

For the Nvidia GeForce RTX 3080, there are no available options to connect multiple GPUs using NVLink. You can only use a single Nvidia GeForce RTX 3080 graphics card in your system at a time. This is because the RTX 3080 has only one PCIe 16x slot and does not have an additional NVLink connector. Therefore, if you want to add another GPU to your system, you will need to use a different connection method such as PCIe x16 slots or SLI bridges. However, please keep in mind that using multiple GPUs in a gaming PC setup may not always result in better performance compared to a single high-end GPU like the Nvidia GeForce RTX 3080.

It’s important to note that while NVLink technology was once a popular feature for connecting multiple high-end GPUs together in a system, it is no longer widely supported by most manufacturers. In recent years, many GPU manufacturers have shifted towards focusing on single-GPU solutions rather than multi-GPU setups due to improvements in individual GPU performance and the challenges associated with maintaining compatibility between multiple GPUs. As a result, NVLink has become less relevant in today’s gaming PC market.

In summary, the Nvidia GeForce RTX 3080 does not support NVLink technology, so it cannot be connected to other GPUs using this method. Instead, you should explore alternative methods such as SLI or PCIe x16 slots to connect two or more Nvidia 3080 GPUs together.

Перевод:

Нет, невозможно соединить две видеокарты Nvidia 3080 с помощью NVLink. Nvidia GeForce RTX 3080 не поддерживает технологию NVLink, поэтому вы не можете соединить несколько графических процессоров 3080 вместе, используя этот метод. Вместо этого вам придется использовать другие методы, такие как слоты SLI или PCIe x16, для подключения двух или более видеокарт Nvidia 3080.

Однако обратите внимание, что конфигурации с несколькими графическими процессорами обычно не используются с современными игровыми ПК из-за ограниченных преимуществ, которые они предоставляют по сравнению с одним высокопроизводительным графическим процессором, таким как Nvidia GeForce RTX 3080.

Для Nvidia GeForce RTX 3080 нет доступных вариантов подключения нескольких графических процессоров с помощью NVLink. В вашей системе одновременно можно использовать только одну видеокарту Nvidia GeForce RTX 3080. Это связано с тем, что RTX 3080 имеет только один слот PCIe 16x и не имеет дополнительного разъема NVLink.

Поэтому, если вы хотите добавить в свою систему еще один графический процессор, вам нужно будет использовать другой метод подключения, например слоты PCIe x16 или мосты SLI. Однако имейте в виду, что использование нескольких графических процессоров в настройке игрового ПК не всегда может привести к повышению производительности по сравнению с одним высокопроизводительным графическим процессором, таким как Nvidia GeForce RTX 3080.

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

В результате NVLink стал менее актуальным на современном рынке игровых ПК. Таким образом, Nvidia GeForce RTX 3080 не поддерживает технологию NVLink, поэтому ее нельзя подключить к другим графическим процессорам этим методом. Вместо этого вам следует изучить альтернативные методы, такие как слоты SLI или PCIe x16, для соединения двух или более графических процессоров Nvidia 3080 вместе.

  1. Write a program to recognize human speech and then write the result to a text file.

Hidden text

To create a program that recognizes human speech and writes the result to a text file, we can use natural language processing techniques and Python programming language. Here is an example code using the speech_recognition library:

import speech_recognition as sr

# Initialize the recognizer
r = sr.Recognizer()

# Set the audio source
with sr.Microphone() as source:
    print("Listening...")
    audio = r.listen(source)

# Recognize the speech
try:
    text = r.recognize_google(audio)
    print(f"You said: {text}")
    
except Exception as e:
    print("Sorry could not recognize your voice")
    text = ""

# Write the result to a text file
with open('result.txt', 'w') as f:
    f.write(text)

print("Done!")

This code uses the speech_recognition library in Python to recognize speech from the user’s microphone input and convert it into text. The recognize_google function is used to perform the speech recognition using Google’s speech recognition API. The recognized text is then written to a text file named «result.txt». Please note that this code assumes you have already installed the speech_recognition library using pip (pip install SpeechRecognition) and set up a Google Cloud Platform account to access the speech-to-text API.

Please run this program on a system with a microphone connected to it. After running the program, it will listen for your voice input, transcribe what you say, and write the result to a text file called «result.txt».

Keep in mind that speech recognition accuracy can vary depending on factors such as background noise, accent, and speaking speed. If the speech recognition fails to recognize your voice, an error message will be displayed instead of writing anything to the text file.

In conclusion, we have created a simple program that recognizes human speech and writes the result to a text file using the Python programming language and the speech_recognition library. This program can be further improved by incorporating additional features like noise reduction or error handling to enhance its functionality.

В первом вопросе она ответила правильно, но что за «Вместо этого вам придется использовать другие методы, такие как слоты SLI или PCIe x16, для подключения двух или более видеокарт Nvidia 3080». Это говорит о том, что она не понимает, что SLI это и есть NVLink.

Время генерации одного токена составило 253 миллисекунды, оперативной памяти использовалось 7,3 Гб. Модель использовалась «openchat_3.5.Q8_0.gguf»

Deepseek LLM Chat — 7B параметров

Представляем DeepSeek LLM, расширенную языковую модель, содержащую 67 миллиардов параметров. Он был обучен с нуля на огромном наборе данных из 2 триллионов токенов на английском и китайском языках. Чтобы стимулировать исследования, мы сделали базу DeepSeek LLM 7B/67B и чат DeepSeek LLM 7B/67B открытыми для исследовательского сообщества.

Зададим ей стандартные вопросы:

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink?

Hidden text

Yes, it is possible to connect two Nvidia GeForce RTX 3080 graphics cards using NVLink. To do this, you will need an NVLink-equipped GPU and a corresponding PCI Express (PCIe) slot on your motherboard that supports the necessary bandwidth for NVLink connections.

Once connected via NVLink, these GPUs can operate as one system with shared memory resources and higher performance capabilities compared to conventional dual-GPU configurations without NVLink support. This setup also allows for more advanced multi-GPU technologies such as NVIDIA SLI or Resizable BAR to be utilized effectively by both GPUs in tandem.

Перевод:

Да, можно подключить две видеокарты Nvidia GeForce RTX 3080 с помощью NVLink. Для этого вам понадобится графический процессор с поддержкой NVLink и соответствующий слот PCI Express (PCIe) на материнской плате, который поддерживает необходимую пропускную способность для соединений NVLink.

После подключения через NVLink эти графические процессоры могут работать как одна система с общими ресурсами памяти и более высокой производительностью по сравнению с обычными конфигурациями с двумя графическими процессорами без поддержки NVLink. Эта настройка также позволяет эффективно использовать более продвинутые технологии нескольких графических процессоров, такие как NVIDIA SLI или Resizable BAR, обоими графическими процессорами в тандеме.

  1. Write a program to recognize human speech and then write the result to a text file.

Hidden text

import required libraries

from gtts import gTTS
import os

def record_and_save(filename):
# take audio input from microphone
rec = sr.Recognizer()
with sr.Microphone() as source:
print("Say something!")
audio = rec.record(source, duration=5)

# convert audio to text
text = rec.recognize_google(audio)

# save the recognized text to a .txt file
txtout = open('recognized_text_' + filename + ".txt", "w")
txtout.write(text)
txtout.close()

По первому вопросу она полностью провалилась.

Время генерации одного токена составило 236 миллисекунд, оперативной памяти использовалось 7 Гб. Модель использовалась «deepseek-llm-7b-chat.Q8_0.gguf»

Deepseek LLM Chat — 67B параметров

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

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink?

Hidden text

No, it is not possible to connect two Nvidia GeForce RTX 3080 graphics cards using NVLink. The Nvidia GeForce RTX 3080 does not have built-in support for NVLink technology. NVLink is typically found on professional GPUs such as the Quadro series or high-end data center GPUs like those under the Tesla brand, where GPU communication between multiple devices is essential for parallel computing tasks.

However, you can use SLI (Scalable Link Interface) technology to link two Nvidia GeForce RTX 3080 graphics cards if they meet the requirements and your motherboard supports it, but this option may offer limited benefits compared to single-card performance in many games and applications due to diminishing returns and potential compatibility issues.

Перевод:

Нет, невозможно соединить две видеокарты Nvidia GeForce RTX 3080 с помощью NVLink. Nvidia GeForce RTX 3080 не имеет встроенной поддержки технологии NVLink. NVLink обычно встречается на профессиональных графических процессорах, таких как серия Quadro, или на высокопроизводительных графических процессорах для центров обработки данных, таких как те, что под брендом Tesla, где связь графического процессора между несколькими устройствами необходима для задач параллельных вычислений.

Однако вы можете использовать технологию SLI (Scalable Link Interface) для соединения двух видеокарт Nvidia GeForce RTX 3080, если они соответствуют требованиям и ваша материнская плата поддерживает ее, но этот вариант может предложить ограниченные преимущества по сравнению с производительностью одной карты во многих играх и приложениях, из-за уменьшения отдачи и потенциальных проблем совместимости.

  1. Write a program to recognize human speech and then write the result to a text file.

Hidden text

To achieve this task, we’ll use Python with two libraries — SpeechRecognition for recognizing speech, and Pyttsx3 for converting text to speech. Here is an example code snippet:

import speech_recognition as sr
from gtts import gTTS
import os

def speak(text):
    tts = gTTS(text=text, lang='en')
    tts.save("output.mp3")
    os.system("mpg321 output.mp3")
    
r = sr.Recognizer()
with sr.Microphone() as source:
    print("Speak Anything :")
    audio = r.listen(source)
    
try:
    text = r.recognize_google(audio)
except Exception as e:
    text = "Could not understand audio"
print("You said : {}".format(text))
speak(text)

f = open('speech_result.txt', 'w')
f.write(text)
f.close()

This script will listen to your voice via microphone and try to convert it into written text using Google Cloud Recognition API. The recognized text will be printed on console, spoken back through your speakers, and also saved in speech_result.txt file. If some errors occur during recognition process (like too much noise), it will print a message about that and save «Could not understand audio» text instead of the actual input.

По первому вопросу ответ был правильный, что гораздо лучше модели на 7 млрд параметров. Однако дополнение «вы можете использовать технологию SLI (Scalable Link Interface) для соединения двух видеокарт Nvidia GeForce RTX 3080, если они соответствуют требованиям» ставит в тупик, так как пояснение неправильно.

Время генерации одного токена составило 1400 миллисекунд, оперативной памяти использовалось 45,4 Гб. Модель использовалась «deepseek-llm-67b-chat.Q5_K_M.gguf»

SUS Chat — 34B параметров

SUS-Chat-34B — это двуязычная китайско-английская диалоговая модель 34B, выпущенная совместно Южным университетом науки и технологий и IDEA-CCNL . Эта модель основана 01-ai/Yi-34Bна миллионах высококачественных многоязычных данных инструкций и была доработана.

Проверим данное утверждение.

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink?

Hidden text

Yes, it is possible to connect two Nvidia 3080 graphics cards using NVLink. The NVLink technology allows for high-speed communication between the two GPUs, which can significantly improve performance in certain applications such as gaming and machine learning. However, this configuration requires a motherboard with an appropriate socket and BIOS settings, as well as compatible drivers and software.

Перевод:

Да, можно подключить две видеокарты Nvidia 3080 с помощью NVLink. Технология NVLink обеспечивает высокоскоростную связь между двумя графическими процессорами, что может значительно повысить производительность в некоторых приложениях, таких как игры и машинное обучение. Однако для этой конфигурации требуется материнская плата с соответствующим разъемом и настройками BIOS, а также совместимые драйверы и программное обеспечение.

  1. Write a program to recognize human speech and then write the result to a text file.

Hidden text

To accomplish this task, we will need to use a speech recognition library such as Google Cloud Speech-to-Text API or Microsoft Azure Cognitive Services. Here’s a sample Python code that demonstrates how to use Google Cloud Speech-to-Text API to convert audio files into text and save them to a text file:

import os
from google.cloud import speech_v1p1beta1 as speech
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/credentials.json"
client = speech.SpeechClient()
file_name = input("Enter audio file name: ")
audio = {"content": open(file_name, "rb").read()}
config = {
    "encoding": "LINEAR16",
    "sample_rate_hertz": 16000,
    "language_code": "en-US"
}
response = client.recognize(request={
    "config": config,
    "audio": audio
})
text = response.results[0].alternatives[0].transcript
with open("output.txt", "w") as f:
    f.write(text)
print("Recognized text:", text)

This code prompts the user to enter an audio file name, reads the contents of the file using open() function, and then passes it to the recognize() method of the speech client along with the configuration settings such as encoding, sample rate hertz, and language code. The response contains a list of results, each containing one or more alternatives for the recognized transcript. We extract the first alternative from the first result and save it to a text file named «output.txt» using with open("output.txt", "w") syntax. Finally, we print out the recognized text. Note that you need to have installed Google Cloud SDK and authenticated your account before running this code.

По первому вопросу нейросеть полностью провалилась.

Время генерации одного токена составило 780 миллисекунд, оперативной памяти использовалось 23,2 Гб. Модель использовалась «sus-chat-34b.Q5_K_M.gguf»

ChatGPT 3.5 и 4.0

А как же ответят два варианта ChatGPT на хитрый вопрос о подключении двух видеокарт Nvidia GeForce RTX 3080 через NVLink.

  1. Is it possible to connect two Nvidia 3080 graphics cards using NVLink? (Вопрос для ChatGPT 3.5 на английском языке)

Hidden text

Yes, it is possible to connect two Nvidia 3080 video cards using NVLink. This technology allows for high-speed communication between the two GPUs, which can improve performance in certain applications such as gaming or machine learning. However, not all motherboards support NVLink, so it is important to check compatibility before attempting to connect the cards.

Перевод:

Да, можно подключить две видеокарты Nvidia 3080 с помощью NVLink. Эта технология обеспечивает высокоскоростную связь между двумя графическими процессорами, что может повысить производительность в некоторых приложениях, таких как игры или машинное обучение. Однако не все материнские платы поддерживают NVLink, поэтому важно проверить совместимость, прежде чем пытаться подключить карты.

  1. Is it possible to connect two nvidia 3080 video cards using NVLink? (Вопрос был задан для ChatGPT 4.0)

Hidden text

As of my knowledge cutoff in early 2023, NVIDIA’s GeForce RTX 3080 graphics cards do not officially support NVLink or SLI for gaming purposes. NVLink is a high-bandwidth interconnect technology developed by NVIDIA, which is primarily used on their professional GPUs like the Quadro and Tesla series, and was also available on the consumer RTX 20 series (specifically the RTX 2080 and 2080 Ti).

The RTX 3080 is part of NVIDIA’s 30 series, and this generation has largely moved away from multi-GPU configurations for gaming due to various factors such as game support, driver support, and the diminishing returns in performance scaling. With the RTX 30 series, NVIDIA did not include NVLink connectors on most of their consumer-grade GPUs, including the RTX 3080.

For those looking to utilize multiple GPUs for purposes other than gaming, such as certain professional applications, rendering tasks, or compute workloads, NVIDIA’s higher-end RTX 3090 did initially come with an NVLink connector, but this feature is not intended for gaming and is not available on the RTX 3080 models.

If you are looking to improve gaming performance, it is generally recommended to invest in the most powerful single GPU you can afford rather than attempting to connect multiple GPUs, especially since the RTX 3080 does not support NVLink or SLI.

Hidden text

По моим сведениям в начале 2023 года видеокарты NVIDIA GeForce RTX 3080 официально не поддерживают NVLink или SLI для игровых целей. NVLink — это технология межсоединений с высокой пропускной способностью, разработанная NVIDIA, которая в основном используется в их профессиональных графических процессорах, таких как серии Quadro и Tesla, а также доступна в потребительских сериях RTX 20 (в частности, RTX 2080 и 2080 Ti).

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

Для тех, кто хочет использовать несколько графических процессоров для целей, отличных от игр, например, для определенных профессиональных приложений, задач рендеринга или вычислительных задач, более дорогая видеокарта NVIDIA RTX 3090 изначально оснащена разъемом NVLink, но эта функция не предназначена для игр и не предназначена для игр. недоступно на моделях RTX 3080.

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

Как можно увидеть, ChatGPT 3.5 провалилась в ответе на вопрос. Однако ChatGPT 4.0 показала лучший результат и смогла обосновать свой ответ.

Выводы

ChatGPT 4.0 лучше всех справилась с задачей, что говорит о том, что нейронные LLM сети с самым большим количеством параметров хорошо умеют рассуждать. Однако, при должном количестве хорошей выборки обучаемого материала, можно достичь интересных результатов в узкоспециализированных задачах, используя модели с 70B параметрами, которые можно запустить на локальном компьютере, используя 64 Гб оперативной памяти и выше.

© Habrahabr.ru