LLamaSharp: библиотека для запуска LLM на C#/.NET

LLamaSharp: библиотека для запуска LLM на C#/.NET

LLamaSharp — это библиотека на C#/.NET, позволяющая эффективно запускать LLM (среди прочих моделей, LLaMA) на локальных устройствах. Проект предлагает высокоуровневые API и поддержку Retrieval-Augmented Generation (RAG), что облегчает интеграцию больших языковых моделей в приложения.

Библиотека выделяется среди аналогичных решений своей простотой в использовании и кроссплатформенностью, а также эффективностью как на CPU, так и на GPU благодаря использованию библиотеки llama.cpp. Подходит для разработчиков, которые хотят внедрить LLM в свои .NET приложения или исследовать возможности локальной работы с моделями.

Чтобы запустить LLamaSharp, можно использовать NuGet пакеты, доступные для разных бэкендов: CPU, CUDA и Vulkan. Учти, что проект все еще может находиться на ранней стадии разработки и лучше подойдет для разработки и тестирования, чем для боевых систем на текущий момент.

LLamaSharp — это кроссплатформенная библиотека, позволяющая запускать модели LLaMA (и другие) на локальном устройстве. Она основана на llama.cpp и поддерживает эффективную работу как на CPU, так и на GPU. Библиотека предоставляет более высокоуровневые API и поддерживает RAG, обеспечивая удобное развертывание LLM (больших языковых моделей) в приложениях.

Установка и запуск

Для начала работы с LLamaSharp необходимо установить саму библиотеку и один или несколько пакетных бэкендов. LLamaSharp использует нативные библиотеки, скомпилированные из C++, поэтому никакой компиляции C++ выполнять не нужно — просто установи необходимые пакеты. Вот как это сделать:

PM> Install-Package LLamaSharp

Далее установи один или несколько из следующих бэкендов:

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

Подготовка модели

LLamaSharp работает с моделями в формате GGUF, которые можно получить из форматов PyTorch (.pth) и Huggingface (.bin). Для получения файла GGUF у тебя есть два варианта:

  • Поискать модели в Huggingface с добавлением 'gguf' к названию модели; там можно найти много уже конвертированных файлов.
  • Конвертировать модель самостоятельно, следуя инструкциям из README llama.cpp.

Пример использования

Вот пример простого взаимодействия с ботом, основанным на LLM в LLamaSharp. Не забудь заменить путь к модели на свой:

string modelPath = @""; // измените на свой путь к модели.
var parameters = new ModelParams(modelPath)
{
    ContextSize = 1024,
    GpuLayerCount = 5
};
using var model = LLamaWeights.LoadFromFile(parameters);
using var context = model.CreateContext(parameters);
var executor = new InteractiveExecutor(context);

// Добавление истории чата
var chatHistory = new ChatHistory();
chatHistory.AddMessage(AuthorRole.System, "Transcript of a dialog...");
chatHistory.AddMessage(AuthorRole.User, "Hello, Bob.");
chatHistory.AddMessage(AuthorRole.Assistant, "Hello. How may I help you today?");

ChatSession session = new(executor, chatHistory);

// Запуск сессии
while (userInput != "exit")
{
    await foreach (var text in session.ChatAsync(new ChatHistory.Message(AuthorRole.User, userInput), inferenceParams))
    {
        Console.Write(text);
    }
    userInput = Console.ReadLine() ?? "";
}

Ограничения и советы

Несколько распространённых вопросов:

  • GPU не используется, хотя установлен CUDA? Убедись, что установлен пакет бэкенда, совместимый с установленной версией CUDA.
  • Инференс медленный? Для больший моделей требуется больше времени. Настрой GpuLayerCount на максимальное значение для улучшения производительности.
  • Программа зависает без вывода? Проверь совместимость нативной библиотеки и модели с используемой версией LLamaSharp.
  • Модель генерирует бесконечный вывод? Убедись, что ты установил анти-промпт или max-length при выполнении инференса.

Для получения дополнительной информации обращайся к документации и ресурсам проекта.

Открыть на GitHub: SciSharp/LLamaSharp →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте