个人版 AI 辅助系统的尝试

2023-12-17 10:44

本文主要是介绍个人版 AI 辅助系统的尝试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 CSDN 的时候,我就一直想要有自己的 AI 工作环境。我们组只有一台高配的办公服务器,用于训练模型,分析数据。通常来说这台机器都很忙。如果想要
做一些研究工作或试验,资源就有点紧张了。而我自己的工作机,虽然是一台买了只有四五年的高配 MacBook Pro,但是做 AI 已经不太够用。即使训练一个非常
朴素的文本分类器,也要花费太多时间。那几年我偏好用传统的算法而非 AI 工具解决问题,其实也有这个原因。并非我不能驾驭 AI 技术,只是因地制宜而已。
何况团队里的年轻人们对 AI 相关工作做的非常好,我更关注那些更需要有人站出来解决的东西。

说起来还是要感谢 CSDN,我正是用离职时的补偿,买了这台满配的 MacBook Pro 。128 内存,
16 core cpu + 40 core gpu + 16 core npu 的 M3 MAX。足够我运行常规的 AI 算法,一些规模不太大的 LLM 模型也完全可以运行。

对于 AI 系统,我的目标是:

  1. 虽然现在互联网上有越来越多的 AI 服务,免费的也不在少数,但是我仍然希望可以建立一套可以脱离外部服务的私人工具系统
  2. 这套 AI 系统首先应该对我有实用价值,能够完成一些常规的软件应用不容易做到的事情。比如一些智能化的文档生成、翻译和代码生成工作
  3. 我可以通过调整和训练,使AI 系统更符合自己的需求,这里面包含了应用软件配置、开发,模型的调整甚至训练,总之,这套系统对我应该是个白盒。

经过一段时间的尝试,我初步的达到了这些目的。

最初,我尝试过直接用 torch 或 tensorflow 这样的框架运行模型,后来很快发现即使这台满配的机器,运行 30B 的 LLM 也有些吃力,毕竟现在的 AI
产业已经普遍使用价格高昂的超级显卡。而我,只是一个希望一次投资可以尽可能多用的穷人。

很快,我开始尝试用同好们推荐的 llama.cpp 和 ollama 来运行模型。尽管看起来这两个工具有些重叠,它们都可以基于 cpp 构建的运行时运行模型,
都提供了 server ,部署客户端也很方便。但是经过实践,llama.cpp 有更好的泛用性,有些模型 ollama 不能识别,但是 llama.cpp 可以加载并处理
为 gguf 格式。而经过 llama.cpp 处理后的模型,ollama 是可以加载的。另一方面,在我的机器上,llama.cpp 运行 70b 的模型,慢到无法使用,
而 ollama 可以。至少在 M3 硬件环境中,ollama 表现出了更好的性能。

再接下来,就是我在 oliva 项目中发布的词法分析器工具,它可以把几个我常用的编程语言,C、Java、
Python、Scala 等等处理为 alpaca lora 格式。用于微调模型,目前我正在尝试基于 llamacode 的几个小规模版本,训练出一个适合我自己的版本。
因为从我自己的体验看,codellama 对c语言和 scala 的支持并不强,高版本的 java 应该也还没有引入,而这些是我需要的。甚至可以说我搭建这套
私有 AI 系统,一个重要的目标就是辅助我写一些 c 代码。目前的实验来看,llama factory
项目能够完成这个工作。

我完全没想到的是,整个工具链上,我最不满意的居然是客户端,是的,我试用了 ollama 官网上推荐的好几个客户端应用,都不符合我的期待,有些有配
置问题,有些对中文支持的非常差,有些使用起来很繁琐。于是我用 Python 写了一个命令行工具
Blue Shell。用于日常工作。这个工具支持行编辑,能够可靠的支持中文,可以支持 codellama 的
markdown 输出,可以方便的连接指定的 ollama 。也许将来,我还会再开发一些 GUI 客户端或者开发工具的插件。但是目前,这个工具体系已经初步的
运行起来了。我已经开始用 AI 为 Jaskell 项目生成单元测试代码——嗯其实我也希望它能做一些更智能的编程工作,但是目前看,真正需要创造力的部分,
还是不能指望这些概率模型的。

这篇关于个人版 AI 辅助系统的尝试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/504075

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

三频BE12000国补到手2549元! ROG 魔盒Pro WIFI7电竞AI路由器上架

《三频BE12000国补到手2549元!ROG魔盒ProWIFI7电竞AI路由器上架》近日,华硕带来了ROG魔盒ProWIFI7电竞AI路由器(ROGSTRIXGR7Pro),目前新... 华硕推出了ROG 魔盒Pro WIFI7电竞AI路由器(ROG STRIX GR7 Phttp://www.cppcn

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定