首页 > 其他分享 >深入浅出LLamaSharp:打造智能.NET应用,不需GPU也能玩转LLaMA模型

深入浅出LLamaSharp:打造智能.NET应用,不需GPU也能玩转LLaMA模型

时间:2024-08-29 15:22:15浏览次数:10  
标签:集成 kernel Console 模型 LLamaSharp LLaMA GPU NET

        在如今的.NET社区中,机器学习和人工智能的应用越来越普遍。今天我要给大家推荐一个名叫LLamaSharp的开源项目。这是llama.cppC#/.NET绑定,提供了高级的API,使得我们能在本地设备上使用C#/.NET 推理LLaMA模型,并且部署它。

        LLamaSharp支持在Windows、Linux和Mac上运行,无需自己编译llama.cpp。即便在没有GPU或者GPU内存不足的情况下,也能够使用LLaMA模型,这是非常让人兴奋的一点!

        此外,LLamaSharp还提供了与其他项目如semantic-kernel、kernel-memoryBotSharp的集成,以提供更高层次的应用程序。

安装步骤

首先,在NuGet中安装LLamaSharp包:

PM> Install-Package LLamaSharp

然后,根据您的需要安装以下后端之一:

  • LLamaSharp.Backend.Cpu:适用于Windows和Linux的纯CPU,以及适用于Mac的Metal。

  • LLamaSharp.Backend.Cuda11:适用于Windows和Linux的CUDA11。

  • LLamaSharp.Backend.Cuda12:适用于Windows和Linux的CUDA12。

如果这些后端都不适合您的需求,您可以自己编译llama.cpp。在这种情况下,请不要安装后端包!而是将您编译的DLL添加到您的项目中,并确保在编译项目时能够将其复制到输出目录。如果要这样做,您必须使用正确的llama.cpp提交版本,请参考下方的版本表格。

(可选)对于Microsoft semantic-kernel集成,请安装LLamaSharp.semantic-kernel包。

PM> Install-Package LLamaSharp.semantic-kernel

(可选)对于Microsoft kernel-memory集成,请安装LLamaSharp.kernel-memory包(这个包当前只支持net6.0)。

PM> Install-Package LLamaSharp.kernel-memory

选择版本的建议

        由于llama.cpp是一个变动频繁并且常有重大变更的项目,因此LLamaSharp也经常会有突破性的更改。LLamaSharp遵循语义化版本控制,并且不会在补丁版本中引入API的重大变更。

建议尽快更新到最新的补丁版本,同时也尽快更新到新的主版本。

快速开始-模型推理和聊天会话

        LLamaSharp提供了两种运行推理的方式:LLamaExecutor和ChatSession。ChatSession是对executor和模型的更高级别的封装。下面是一个使用chat session的简单示例。

using LLama.Common;using LLama;
string modelPath = "<Your model path>"; // 请更改为您自己的模型路径var prompt = "Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision.\r\n\r\nUser: Hello, Bob.\r\nBob: Hello. How may I help you today?\r\nUser: Please tell me the largest city in Europe.\r\nBob: Sure. The largest city in Europe is Moscow, the capital of Russia.\r\nUser:"; // 这里使用“chat-with-bob”提示。
// 加载模型var parameters = new ModelParams(modelPath){    ContextSize = 1024,    Seed = 1337,    GpuLayerCount = 5};using var model = LLamaWeights.LoadFromFile(parameters);
// 初始化一个聊天会话using var context = model.CreateContext(parameters);var ex = new InteractiveExecutor(context);ChatSession session = new ChatSession(ex);
// 展示提示内容Console.WriteLine();Console.Write(prompt);
// 循环运行推理,与LLM聊天while (prompt != "stop"){    await foreach (var text in session.ChatAsync(new ChatHistory.Message(AuthorRole.User, prompt), new InferenceParams { Temperature = 0.6f, AntiPrompts = [ "User:" ] }))    {        Console.Write(text);    }    prompt = Console.ReadLine() ?? "";}
// 保存会话session.SaveSession("SavedSessionPath");

模型量化

以下示例展示了如何量化模型:

string srcFilename = "<Your source path>";string dstFilename = "<Your destination path>";string ftype = "q4_0";if(Quantizer.Quantize(srcFileName, dstFilename, ftype)){    Console.WriteLine("Quantization succeed!");}else{    Console.WriteLine("Quantization failed!");}

想了解更多使用方法,请参考示例代码。

Web API

        LLamaSharp提供了ASP.NET core集成以及一个Web应用演示。因为人手不足,如果您熟悉ASP.NET core,将非常感激你能帮助升级Web API集成。

特性

以下是项目中的特性清单:

✅ LLaMA模型推理

✅ 生成嵌入、分词和去分词 

✅ 聊天会话 

✅ 模型量化

✅ 语法 

✅ 状态保存与加载 

✅ BotSharp集成在线演示 

✅ ASP.NET core集成 

✅ Semantic-kernel集成 

标签:集成,kernel,Console,模型,LLamaSharp,LLaMA,GPU,NET
From: https://blog.csdn.net/u012094427/article/details/141680009

相关文章

  • 英伟达玩转剪枝、蒸馏:把Llama 3.1 8B参数减半,性能同尺寸更强
    前言 小模型崛起了。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。本文转载自机器之心仅用于学术分享,若侵权请联系删除CV方向的准研究生们,未来三年如何度过?招聘高光谱图像、语义分割、diffusion等方向论文指导老师上个月......
  • 错误处理、cuda模型、GPU架构杂谈
    错误处理、cuda模型、GPU架构杂谈错误处理所有编程都需要对错误进行处理,早起的编码错误,编译器会帮搞定,内存错误也能观察出来,但是有些逻辑错误很难发现,甚至到了上线运行时才会被发现,而且有些厉害的bug复现会很难,不总出现,但是很致命,而且CUDA基本都是异步执行的,当错误出现的时候,不......
  • GPU的Fermi 架构与Kepler架构杂谈
    Fermi架构Fermi架构是第一个完整的GPU架构,如图10-15所示。图10-15Fermi架构是第一个完整的GPU架构Fermi架构逻辑图,如图10-15所示,具体数据如下:1)512个加速核心,CUDA核2)每个CUDA核心都有一个全流水线的整数算数逻辑单元ALU,和一个浮点数运算单元FPU3)CUDA核被组织到16个SM上4......
  • 并行动力:用PyTorch在多GPU上释放深度学习潜能
    标题:并行动力:用PyTorch在多GPU上释放深度学习潜能随着深度学习模型变得越来越复杂,单GPU训练往往难以满足需求。幸运的是,PyTorch提供了强大的多GPU训练支持,允许我们利用多个GPU来加速模型的训练过程。本文将详细介绍如何在PyTorch中使用多GPU训练,包括数据并行、模型并行以及......
  • Android 常用的性能分析工具详解:GPU呈现模式
    此篇将重点介绍几种常用的Android性能分析工具:一、Logcat日志选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗。当我们打开一个Activity的时候,log会打印一串log如下:I/ActivityManager﹕Displayedxxx.xxx.xxx/TestActivity:+1s272ms(total+3s843ms)第一......
  • 在AMD GPU上使用DBRX Instruct
    DBRXInstructonAMDGPUs—ROCmBlogs在这篇博客中,我们展示了DBRXInstruct,这是由Databricks开发的一个专家混合大型语言模型,在支持ROCm的系统和AMDGPU上运行。关于DBRXInstructDBRX是一个基于Transformer的仅解码大型语言模型,拥有1320亿参数,采用了细粒度的专家混合......
  • 使用统计方法在AMD GPU上使用JAX Profiler可靠地比较大型生成AI模型中的算法性能
    UsingstatisticalmethodstoreliablycomparealgorithmperformanceinlargegenerativeAImodelswithJAXProfileronAMDGPUs—ROCmBlogs摘要本文提供了一份详细的指南,介绍如何在JAX实现的生成AI模型中测量和比较各种算法的性能。利用JAXProfiler和统计分析......
  • 在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)
    在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)说明:首次发表日期:2024-08-28官方Github仓库地址:https://github.com/xenova/transformers.js/tree/main/examples/remove-background-client准备下载onnx模型文件:https://huggingface.co/briaai/RMBG-1.......
  • 在低显存GPU上运行PixArt-Σ/Flux.1图像生成:Python简短教程
    由PixArt-Σ在本地生成,所需显存不超过8Gb。图像生成工具的热度从未如此高涨,而且它们也变得越来越强大。像PixArtSigma和Flux.1这样的模型处于领先地位,这得益于它们的开源权重模型和宽松的许可协议。这种设置允许进行创造性的尝试,包括在不共享计算机外部数据的情况下训练LoRA......
  • 释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践
    释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践在深度学习模型的训练过程中,计算资源的需求往往随着模型复杂度的提升而增加。PyTorch,作为当前领先的深度学习框架之一,提供了torch.nn.DataParallel这一工具,使得开发者能够利用多个GPU进行数据并行处理,从而显著加速......