经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
AntSK 0.2.3 版本更新:轻松集成 AI 本地离线模型
来源:cnblogs  作者:许泽宇  时间:2024/3/25 8:57:26  对本文有异议

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

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

  1. 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 所需的依赖包

  1. public async Task PipInstall()
  2. {
  3.  
  4. var cmdTask = Task.Factory.StartNew(() =>
  5. {
  6.  
  7. var isProcessComplete = false;
  8.  
  9. process = new Process
  10. {
  11. StartInfo = new ProcessStartInfo
  12. {
  13. FileName = "pip",
  14. Arguments = "install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple",
  15. UseShellExecute = false,
  16. RedirectStandardOutput = true,
  17. RedirectStandardError = true,
  18. WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory,
  19. }
  20. };
  21. process.OutputDataReceived += (sender, eventArgs) =>
  22. {
  23. Console.WriteLine($"{eventArgs.Data}");
  24. OnLogMessageReceived(eventArgs.Data);
  25. };
  26. process.ErrorDataReceived += (sender, eventArgs) =>
  27. {
  28. Console.WriteLine($"{eventArgs.Data}");
  29. OnLogMessageReceived(eventArgs.Data);
  30. };
  31. process.Start();
  32. process.BeginOutputReadLine();
  33. process.BeginErrorReadLine();
  34. process.WaitForExit();
  35. }, TaskCreationOptions.LongRunning);
  36. }

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

  1. public async Task StartLLamaFactory(string modelName, string templateName)
  2. {
  3. var cmdTask = Task.Factory.StartNew(() =>
  4. {
  5.  
  6. var isProcessComplete = false;
  7.  
  8. process = new Process
  9. {
  10. StartInfo = new ProcessStartInfo
  11. {
  12. FileName = "python",
  13. Arguments = "api_demo.py --model_name_or_path " + modelName + " --template " + templateName + " ",
  14. UseShellExecute = false,
  15. RedirectStandardOutput = true,
  16. RedirectStandardError=true,
  17. WorkingDirectory = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "llamafactory"),
  18. }
  19. };
  20. process.StartInfo.Environment["CUDA_VISIBLE_DEVICES"] = "0";
  21. process.StartInfo.Environment["API_PORT"] = "8000";
  22. process.StartInfo.EnvironmentVariables["USE_MODELSCOPE_HUB"] = "1";
  23. process.OutputDataReceived += (sender, eventArgs) =>
  24. {
  25. Console.WriteLine($"{eventArgs.Data}");
  26. OnLogMessageReceived(eventArgs.Data);
  27. };
  28. process.ErrorDataReceived += (sender, eventArgs) =>
  29. {
  30. Console.WriteLine($"{eventArgs.Data}");
  31. OnLogMessageReceived(eventArgs.Data);
  32. };
  33. process.Start();
  34. process.BeginOutputReadLine();
  35. process.BeginErrorReadLine();
  36. process.WaitForExit();
  37. }, TaskCreationOptions.LongRunning);
  38. }

  

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

        效果展示: 

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

 

        选择好后我们点击启动。

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

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

 

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

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

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

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

 

原文链接:https://www.cnblogs.com/xuzeyu/p/18091907

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号