首页 > 编程语言 >纯c#运行开源本地大模型Mixtral-8x7B

纯c#运行开源本地大模型Mixtral-8x7B

时间:2024-01-27 09:56:35浏览次数:29  
标签:c# Mixtral 模型 8x7B llama 推理

先看效果图,这是一个比较典型的逻辑推理问题,以下是本地运行的模型和openai gpt3.5的推理对比

本地运行Mixtral-8x7B大模型:

 chatgpt3.5的回答:

 关于Mixtral 8x7B这个就不多介绍了,但凡在关注开源大模型的朋友应该知道这个模型是目前市场上最具竞争力的开源大型模型之一,其能力水平在多项任务中都有可以和gpt3.5打的有来有回,今天主要聊聊使用c#如何本地化部署实践

整个模型部署其实相对已经比较简单了,其核心是采用了llama.cpp这个项目,这个项目是用 ggml(一个用 c++ 开发的一个机器学习的张量库)写的一个推理 LLaMA 的 demo,随着项目持续火爆吸引了大量没有昂贵GPU 的玩家,成为了在消费级硬件上玩大模型的首选。而今天我们要用到的项目就是依赖llama.cpp的c#封装实现的nuget包LLamaSharp,地址(https://github.com/SciSharp/LLamaSharp)。基于它对llama.cpp的c#封装从而完成本机纯c#部署大模型的实现。通过LLamaSharp既可以使用cpu进行推理,如果你有30系以上的N卡,也可以使用它的LLamaSharp.Backend.Cuda11或者Cuda12进行推理,当然其效果肯定相比纯CPU推理速度更快。

整个项目我已经放到github上了,有兴趣的同学可以自取:https://github.com/sd797994/LocalChatForLlama

另外关于模型格式说一下,当前使用llama.cpp主要通过gguf格式加载,这是一种专门面向llama.cpp的格式,可以通过huggingface搜索:https://huggingface.co/models?search=gguf。而我目前使用的是Nous-Hermes基于Mixtral-8x7B微调的版本,它的repo如下:https://huggingface.co/TheBloke/Nous-Hermes-2-Mixtral-8x7B-DPO-GGUF/tree/main 据说Nous-Hermes微调版本的性能略好于Mixtral-8x7B。唯一需要注意的是如果不是使用我推荐的模型,index.cshtml这里需要根据模型的实际输出硬编码成对应的字段:

最后的Tips:由于模型确实比较大,在纯CPU模式下如果内存不太够(一般16G)的情况下推理很缓慢,一分钟可能也就能输出几个字。建议上较大内存的纯CPU推理或者使用NVIDIA的显卡安装对应的CUDA环境后基于CUDA推理,整个效果会快很多。

标签:c#,Mixtral,模型,8x7B,llama,推理
From: https://www.cnblogs.com/chinasoft/p/17991116

相关文章

  • 为什么 Redis Cluster 是16384个槽位
    为什么RedisCluster是16384个槽位正常的心跳数据包携带节点的完整配置,它能以幂等方式来更新配置。如果采用16384个插槽,占空间2KB(16384/8);如果采用65536个插槽,占空间8KB(65536/8)。RedisCluster不太可能扩展到超过1000个主节点,太多可能导致网络拥堵。16384个插......
  • spring IOC DI 容器杂谈
    IOC容器的原理spring 博客收藏参考博客https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484247&idx=1&sn=e228e29e344559e469ac3ecfa9715217&chksm=ebd74256dca0cb40059f3f627fc9450f916c1e1b39ba741842d91774f5bb7f518063e5acf5a0#rdhttps://www.zhihu.c......
  • class
    1#include<iostream>2usingnamespacestd;3classBox{4private:5doublelength;6doublewidth;7public:8voidsetLength(doublelength);9voidsetWidth(doublewidth);10doublegetLe......
  • SpringMVC简易教程
     SpringMVC是业务逻辑控制层框架。 SpringMVC简易教程(01):SpringMVC基础SpringMVC简易教程(02):SpringMVC请求参数绑定SpringMVC简易教程(03):SpringMVC常用注解SpringMVC简易教程(04):SpringMVC响应数据SpringMVC简易教程(05):SpringMVC上传文件SpringMVC简易教程(06):SpringMVC异常处理......
  • class
    #include<iostream>usingnamespacestd;classBox{ private: doublelength; doublewidth; public: voidsetLength(doublelength); voidsetWidth(doublewidth); doublegetLength(); doublegetWidth(); doublegetArea();};voidBox::setLen......
  • SpringBoot中使用LocalDateTime踩坑记录
    目录前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目基于Java21和SpringBoot3开发,序列化工具使用的是默认的Jackson,使用SpringDataRedis操作Redis缓......
  • 无涯教程-Scala - Functions with Named Arguments函数
    在普通函数调用中,调用中的参数按照被调用函数的参数顺序一一匹配。命名参数允许您以不同顺序将参数传递给函数。语法很简单,每个参数前面都有一个参数名称和一个等号。尝试下面的程序,这是一个显示带有命名参数的函数的简单示例。例objectDemo{defmain(args:Array[S......
  • YouTrack Pending 项目删除
    YouTrack项目在删除的时候可能没有办法马上就删除掉。我们还会看到类似下面的这种情况。 根据官方的解释说明是,如果项目有很多内容或者有很多的信息,那么在删除的时候会消耗很多的时间,所以YouTrack给出了一个Pending删除的状态。哪怕就是在Pending删除的这个状态的时候,我们......
  • YouTrack 如何删除项目
    要在YouTrack删除项目,首先你需要有项目的删除权限才可以。如果你删除权限的话,可以进入项目界面,然后选择右上侧的通用信息。  然后选择上侧的删除项目。  在弹出的界面中输入项目的名称后才能删除项目。然后单击删除即可。需要注意的是,删除的项目是没有办法恢复的。......
  • 「杂题乱刷」AT_abc307_e
    链接(at)链接(luogu)dp板子。不难看出,可以设两个状态:\(dp_{i,0}\)表示第\(i-1\)位颜色与第\(1\)位颜色不同且前\(i\)位每相邻两位的颜色均不同的方案数。\(dp_{i,1}\)表示第\(i-1\)位颜色与第\(1\)位颜色相同且前\(i\)位每相邻两位的颜色均不同的方案数。......