首页 > 其他分享 >AntSK 0.2.3 版本更新:轻松集成 AI 本地离线模型

AntSK 0.2.3 版本更新:轻松集成 AI 本地离线模型

时间:2024-03-23 23:33:48浏览次数:30  
标签:llamafactory AI 模型 0.2 离线 eventArgs AntSK process Data

        大家好,今天和大家分享 AntSK 知识库/智能体项目的最新进展。

        AntSK 是一个基于 .Net 8、Blazor 及 SemanticKernel 开发的 AI 项目,旨在为开发者提供一个强大的 AI 知识库与智能体平台。最新版本的项目可以在 GitHub 上找到:

https://github.com/AIDotNet/AntSK

        在 AntSK 之前的版本中,我们已经成功地整合了使用 LLamaSharp 加载本地模型的 gguf 类型,但我们并没有就此止步。为了进一步支持更多类型的本地模型,并便于测试不同模型的表现,我们更新了项目,加入了 llamafactory 的集成,并且着手准备接下来的模型微调功能。

        下面是我们对 llamafactory 集成工作的一个概述:

        我们知道,.Net 平台在运行 AI 模型推理和训练方面的组件库并不如 Python 那样丰富(虽然博主也是主技能.Net )。因此,我们这次选择了一个工程上的简化方案:直接将 llamafactory 的核心文件集成到 AntSK 项目中,并通过使用 llamafactory 的 API 来完成集成,而非直接使用 python.net。这样做的主要目的是降低使用门槛,即便是对 Python 不够熟悉的开发者也能够轻松上手。

        首先,我们将 llamafactory 核心文件整合到了项目中,见下图: 

        我们原先考虑通过 python.net 来完成集成,但后来发现那样会增加很多工作量。因此转而采用了一个间接的方法:自动通过 AntSK 安装依赖并启动 llamafactory

        代码实例 1:安装python环境以及安装 llamafactory 所需的依赖包

 public async Task PipInstall()
 {

     var cmdTask = Task.Factory.StartNew(() =>
     {

         var isProcessComplete = false;

         process = new Process
         {
             StartInfo = new ProcessStartInfo
             {
                 FileName = "pip",
                 Arguments = "install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple",
                 UseShellExecute = false,
                 RedirectStandardOutput = true,
                 RedirectStandardError = true,
                 WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory,
             }
         };  
         process.OutputDataReceived += (sender, eventArgs) =>
         {
             Console.WriteLine($"{eventArgs.Data}");
             OnLogMessageReceived(eventArgs.Data);
         };
         process.ErrorDataReceived += (sender, eventArgs) =>
         {
             Console.WriteLine($"{eventArgs.Data}");
             OnLogMessageReceived(eventArgs.Data);
         };
         process.Start();
         process.BeginOutputReadLine();
         process.BeginErrorReadLine();
         process.WaitForExit();
     }, TaskCreationOptions.LongRunning);
 }

  代码实例 2:启动 llamafactory 并指定模型及模板

public async Task StartLLamaFactory(string modelName, string templateName)
 {
     var cmdTask = Task.Factory.StartNew(() =>
     {

         var isProcessComplete = false;

         process = new Process
         {
             StartInfo = new ProcessStartInfo
             {
                 FileName = "python",
                 Arguments = "api_demo.py --model_name_or_path " + modelName + " --template " + templateName + " ",
                 UseShellExecute = false,
                 RedirectStandardOutput = true,
                 RedirectStandardError=true,
                 WorkingDirectory = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "llamafactory"),
             }
         };
         process.StartInfo.Environment["CUDA_VISIBLE_DEVICES"] = "0";
         process.StartInfo.Environment["API_PORT"] = "8000";
         process.StartInfo.EnvironmentVariables["USE_MODELSCOPE_HUB"] = "1";
         process.OutputDataReceived += (sender, eventArgs) =>
         {
             Console.WriteLine($"{eventArgs.Data}");
             OnLogMessageReceived(eventArgs.Data);
         };
         process.ErrorDataReceived += (sender, eventArgs) =>
         {
             Console.WriteLine($"{eventArgs.Data}");
             OnLogMessageReceived(eventArgs.Data);
         };
         process.Start();
         process.BeginOutputReadLine();
         process.BeginErrorReadLine();
         process.WaitForExit();
     }, TaskCreationOptions.LongRunning);
 }

  

        随后,我们将模型的 API 地址设置为了 llamafactory 的代理地址。这个简化的流程使得我们能够迅速使用 llamafactory

        效果展示: 

  在创建模型时,选择LLamaFactory,然后我们就可以选择很多魔塔的本地模型

 

        选择好后我们点击启动。

        为了更容易看到安装依赖和运行llamafactory的日志,我们加入了类似控制台的显示组件:

 等待模型下载结束后,我们在请求地址中设置llamafactory的服务地址(这里默认配置的是8000端口

 

        然后我们就可以开始聊天了!!

        通过AntSK可以非常容易集成各种本地模型进行使用。

        我们下一步将会集成bgeembedding模型,以及如何在AntSK中实现rerank

        更进一步,我们的下一步计划是集成模型微调功能,为此,我们已经在布局相关工作。希望大家继续关注我的公众号,持续跟进我们的最新动态!未来,让我们共同见证 AntSK 如何使 AI 集成更加简单化、智能化。

 

标签:llamafactory,AI,模型,0.2,离线,eventArgs,AntSK,process,Data
From: https://www.cnblogs.com/xuzeyu/p/18091907

相关文章

  • 生成式AI的力量:它如何彻底改变业务流程自动化
    生成式AI的力量:它如何彻底改变业务流程自动化     生成式AI是一种可以创建新数据或内容的人工智能,它正在彻底改变业务流程自动化。通过利用生成式人工智能,企业可以简化和增强各种流程,从而提高生产力、效率和创新能力。生成式人工智能在业务自动化方面的主要优势之一是能够加......
  • 可视化portainer
    0.简介​ Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。而且完全免费,基于容器化的安装方式,方便高效部署。​ 且支持多种docker编排方式,包括单机、dockerswarm、k8s等。1.安装官网:https://www.portainer.io/安装文档:htt......
  • org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.Authen
    出现问题org.springframework.amqp.AmqpAuthenticationException:com.rabbitmq.client.AuthenticationFailureException:ACCESS_REFUSED-LoginwasrefusedusingauthenticationmechanismPLAIN.Fordetailsseethebrokerlogfile.解决问题创建一个超级用户//添......
  • vue2 在 main.js 中定义全局函数,在二次封装的 api\index.js 中引用全局函数 GPT4 Tur
    在Vue2中,你可以通过Vue的原型系统来定义全局函数,然后在整个应用的任何组件中使用这些函数。同样,你也可以在其他JavaScript文件中使用这些函数,比如你提到的二次封装的API文件。下面是如何实现这一过程的步骤:###第一步:在`main.js`中定义全局函数在Vue项目的入口文件`main.js`中,你......
  • Claude3发布成为大模型之王,Openai是否真的跌落神坛,附试用链接
    人不走空                                          ......
  • 【Docker】Airflow 容器化部署
    Airflow环境标准软件基于BitnamiAirflow构建。当前版本为2.8.2你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取配置文件地址:https://gitee.com/qingplus/qingcloud-platformqinghub自动安装部署配置库什么是Air......
  • 涉及time_wait参数
    net.ipv4.tcp_tw_reuse开启SO_REUSEADDR选项或者配置net.ipv4.tcp_tw_reuse为1后,Linux将可以复用处于TIME-WAIT状态的连接。前面我们说到,TIME-WAIT状态存在的目的一是为了避免在新连接上收到旧连接的数据,二是为了确保被动关闭方正确关闭连接,那么我们开启SO_REU......
  • [Rust] Traits
    Example1:traitAppendBar{fnappend_bar(self)->Self;}implAppendBarforString{fnappend_bar(mutself)->Self{self.push_str("Bar");returnself;}}fnmain(){lets=String::from("Foo&q......
  • JAVA非阻塞IO、异步IO(NIO、AIO)-摘自《netty权威指南》
    一、JAVANIO在介绍NIO编程之前,我们首先需要澄清一个概念:NIO到底是什么的简称?有人称之为NewI/O,因为它相对于之前的I/O类库是新增的,所以被称为NewI/O,这是它的官方叫法。但是,由于之前老的I/O类库是阻塞I/O,NewI/O类库的目标就是要让Java支持非阻塞I/O,所以,更多的人喜欢称之为非阻......
  • AI金融预测领域综述文章筛选,附论文及代码链接,2021年版
    21年的综述最近读了3篇,总结笔记如下:(2021)SystematicLiteratureReview:StockPricePredictionUsingMachineLearningandDeepLearning评价:原文不值得看,精华是下面那4篇论文。但这篇综述的写法比较典型,都是先描述问题,搜解决策略(按关键字搜、按数据源搜比如某个领域的期刊),......