只想简单跑个 AI 大模型,却发现并不简单

之前我用 Ollama 在本地跑大语言模型(可以参考《AI LLM 利器 Ollama 架构和对话处理流程解析》)。这次想再捣鼓点进阶操作,比如 fine-tuning

我的想法是:既然有现成的大模型,为什么不自己整理些特定领域的数据集,给模型“加点料”呢?这样最后就能得到一个针对特定领域优化过的模型了。

不过,我很快发现,事情并没有想象的那么简单。想要 fine-tune ?那得先能通过代码的方式跑起来模型再说吧!于是,这篇文章就诞生了,记录了我如何“简单”跑个 AI 大模型,结果问题不断的过程。

云环境还是本地?

众所周知,跑 AI 模型最好有 GPU。好吧,我没有 GPU。那怎么办?没关系!云环境来救场!Google ColabKaggle Notebooks 都挺香的,毕竟谁不喜欢“白嫖”呢?我果断选择了 Colab,心想资源丰富又强大。

然而,现实狠狠打了我的脸。空闲 GPU 资源?不存在的!对于免费用户,GPU 资源完全是看缘分,没有就是没有。不过,除此之外,Colab 还是很好用的。

由于拿不到更好的资源,以及环境存在限制,我还是决定回到我的“战五渣”本地环境。

Python 环境:折腾得头秃

进入 AI 领域,Python 是不可避免的老大哥,但也正是因为它,噩梦开始了。你会遇到各种 Python 版本问题,还有管理依赖包的问题。于是你就开始在虚拟环境、各种工具的泥潭中挣扎。Condapipenvpipxpoetry 各种工具轮番上场,最后传说中的“现代包管理器” poetry 装个 PyTorch 都失败了!这让我无比抓狂。

怎么办呢?还是得上 Docker!虚拟环境?各种工具?统统扔掉!我只需要一个干净的 Docker 环境,把代码目录挂载到容器里,简直不要太爽。

不过,还要处理下容器重启时需要重新下载依赖包的问题,有两种处理办法。第一种是弄镜像,选择一个包含各种依赖环境的大镜像,或者层层构建新的镜像,我嫌麻烦没这么做。第二种就是把依赖包直接持久化,存储到项目目录下(类似于 node.jsnode_modules),然后把 PYTHONPATH 设置好,指向这些依赖的位置就行了。

再加上 VSCode 的 Remote Development 插件,开发环境终于完美拉起!再也不用担心折腾环境问题了,感觉人生都轻松了不少。

模型选择:总有一个适合你

环境搞定了,接下来该挑模型了(Hugging Face 欢迎你)。兴致勃勃地我决定试试火热的 LLaMA,结果 —— 你得申请权限。我以为随便填填表格就行,结果直接被拒绝了!我猜是因为我填的地区不对……

没事,拒绝就拒绝,天涯何处无模型。换个别的!嗯……想想吧,模型种类那么多,挑个生成文本的模型就行。于是,我瞄上了 QwenQwenLLaMA 都是大家族,下面有多种不同参数的模型,为了不让我的电脑炸掉,最后挑了个小模型 Qwen/Qwen2.5-0.5B

来吧,写好 “Hello, world”,开跑!然后 ………… 小模型也不太行啊,苦等了十几分钟,才给我回消息!不过我也倍感欣慰,毕竟模型是真回消息,速度也比招聘软件的 HR 们快多了。

(关注我,无广告,专注技术,不煽动情绪,也欢迎与我交流)


参考资料:

  • https://huggingface.co/
  • https://huggingface.co/Qwen/Qwen2.5-0.5B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450298.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6云图书管理系统-图书展示

1 /src/store中新增userInfo.js,用于保存用户的登录信息 import { defineStore } from "pinia" import { ref } from vueexport const userInfoStore defineStore(userInfo, () > {//1.定义用户信息const info ref({})const isAdmin ref(false)//2…

css 仿微信朋友圈图片自适应九宫格

不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 示例效果 1 ~ 5张图与5 ~ 9张图 代码实现 <view style="

卸载Python

1、查看安装框架位置并删除 Sudo rm -rf /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8 2、查看应用并删除 在 /Applications/Python 3.x 看是否存在&#xff0c;如果存在并删除。 3、删除软连接 ls -l /usr/bin/py* 或 ls -…

什么是分布式锁?Redis的分布式锁又是什么?

什么是分布式锁&#xff1f; 分布式锁是一种用于解决分布式系统中多节点对共享资源并发访问问题的机制。在分布式系统中&#xff0c;多个服务器实例或服务进程可能同时操作某个共享资源&#xff08;如数据库记录、缓存条目、文件等&#xff09;&#xff0c;导致数据不一致或竞…

千鹿 AI:强大的抠图神器,让你的工作效率飙升99%

宝子们&#xff0c;今天一定要给大家分享一款超厉害的抠图工具 —— 千鹿 AI。千鹿 AI 用起来真的是极其方便&#xff0c;仅仅上传一张图片&#xff0c;短短几秒钟的时间&#xff0c;就能够获得一张边缘超级清晰的抠图成品&#xff0c;实在是令人惊叹。 鹿 AI 的厉害之处有很多…

【Linux系统编程】环境基础开发工具使用

目录 1、Linux软件包管理器yum 1.1 什么是软件包 1.2 安装软件 1.3 查看软件包 1.4 卸载软件 2、Linux编辑器-vim 2.1 vim的概念 2.2 vim的基本操作 2.3 vim的配置 3、Linux编译器-gcc/g 3.1 gcc编译的过程​编辑​编辑​编辑 3.2 详解链接 动态链接 静态链接 4…

二百六十九、Kettle——ClickHouse清洗ODS层原始数据增量导入到DWD层表中

一、目的 清洗ClickHouse的ODS层原始数据&#xff0c;增量导入到DWD层表中 二、实施步骤 2.1 newtime select( select create_time from hurys_jw.dwd_statistics order by create_time desc limit 1) as create_time 2.2 替换NULL值 2.3 clickhouse输入 2.4 字段选择 2.5 …

UDP反射放大攻击防范手册

UDP反射放大攻击是一种极具破坏力的恶意攻击手段。 一、UDP反射放大攻击的原理 UDP反射放大攻击主要利用了UDP协议的特性。攻击者会向互联网上大量的开放UDP服务的服务器发送伪造的请求数据包。这些请求数据包的源IP地址被篡改为目标受害者的IP地址。当服务器收到这些请求后&…

『网络游戏』服务器启动逻辑【16】

新建Visual Studio工程命名为NetGameServer 重命名为ServerStart.cs 创建脚本&#xff1a; 编写脚本&#xff1a;ServerRoot.cs 编写脚本&#xff1a;ServerStart.cs 新建文件夹 调整脚本位置 新建文件夹 新建文件夹网络服务 创建脚本&#xff1a;NetSvc.cs 编写脚本&#xff1…

【word】文章里的表格边框是双杠

日常小伙伴们遇到word里插入的表格&#xff0c;边框是双杠的&#xff0c;直接在边框和底纹里修改边框的样式就可以&#xff0c;但我今天遇到的这个有点特殊&#xff0c;先看看表格在word里的样式是怎么样&#xff0c;然后我们聊聊如何解决。 这个双杠不是边框和底纹的设置原因…

linux线程 | 一点通你的互斥锁 | 同步与互斥

前言&#xff1a;本篇文章主要讲述linux线程的互斥的知识。 讲解流程为先讲解锁的工作原理&#xff0c; 再自己封装一下锁并且使用一下。 做完这些就要输出一堆理论性的东西&#xff0c; 但博主会总结两条结论&#xff01;&#xff01;最后就是讲一下死锁。 那么&#xff0c; 废…

《量子之歌》

第一章&#xff1a;曙光 在2045年的未来&#xff0c;人工智能不再是科幻作品中的虚构&#xff0c;而是成为了日常生活的一部分。在这个时代&#xff0c;深度学习模型已经变得如此庞大和复杂&#xff0c;以至于即使是最快的超级计算机也需要数小时才能完成一次完整的训练。 陈欣…

大华智能云网关注册管理平台 SQL注入漏洞复现(CNVD-2024-38747)

0x01 产品简介 大华智能云网关注册管理平台是一款专为解决社会面视频资源接入问题而设计的高效、便捷的管理工具,平台凭借其高效接入、灵活部署、安全保障、兼容性和便捷管理等特点,成为了解决社会面视频资源接入问题的优选方案。该平台不仅提高了联网效率,降低了联网成本,…

【前端】制作一个自己的网页(4)

刚才我们完成了网页中标题与段落元素的学习。在实际开发时&#xff0c;一个网页通常会包含多个相同元素&#xff0c;比如多个标题与段落。 对于相同标签的元素&#xff0c;我们又该如何区分定位呢&#xff1f; 对多个相同的标签分类 比如右图设置了七个段落元素&#xff0c;它…

DS堆的实际应用(10)

文章目录 前言一、堆排序建堆排序 二、TopK问题原理实战创建一个有一万个数的文件读取文件并将前k个数据创建小堆用剩余的N-K个元素依次与堆顶元素来比较将前k个数据打印出来并关闭文件 测试 三、堆的相关习题总结 前言 学完了堆这个数据结构的概念和特性后&#xff0c;我们来看…

react18中实现简易增删改查useReducer搭配useContext的高级用法

useReducer和useContext前面有单独介绍过&#xff0c;上手不难&#xff0c;现在我们把这两个api结合起来使用&#xff0c;该怎么用&#xff1f;还是结合之前的简易增删改查的demo&#xff0c;熟悉vue的应该可以看出&#xff0c;useReducer类似于vuex&#xff0c;useContext类似…

wxml 模板语法-数据绑定

mustache 语法的应用场景&#xff1a; 动态绑定内容&#xff1a; 动态绑定属性&#xff1a; 三元运算&#xff1a; 算数运算&#xff1a;

MobileNet v3(相比于MobileNet v2)

概述&#xff1a; 更新Block(bneck) 使用NAS搜索参数 &#xff08;Neural Architecture Search&#xff09; 重新设计耗时层结构 更准确&#xff0c;更高效 以及表中数据展示 更新Block 1.加入SE模块 2.更新了激活函数 首先通过一个1*1的卷积层来进行一个升维处理&#…

深入了解vcruntime140.dll:为什么会出现vcruntime140.dll丢失及修复

“找不到vcruntime140.dll”或“vcruntime140.dll丢失”是什么情况&#xff1f;出现这样的情况有什么方法可以解决&#xff1f;今天这篇文章将和大家聊聊vcruntime140.dll丢失错误的详细解决办法&#xff0c;一步步教大家修复错误vcruntime140.dll文件。 一步步修复错误vcrunti…

[含文档+PPT+源码等]精品基于springboot实现的原生微信小程序酒店管理系统[包运行成功+永久免费答疑辅导]

基于Spring Boot实现的原生微信小程序酒店管理系统&#xff0c;其背景主要源于酒店行业的信息化需求和移动互联网技术的快速发展。以下是对该背景的具体阐述&#xff1a; 一、酒店行业的信息化需求 信息量剧增&#xff1a; 随着旅游业的蓬勃发展&#xff0c;酒店数量不断增加&…