V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuyue001
V2EX  ›  程序员

有人(个人)自己使用开源的 LLM 大模型吗?

  •  
  •   yuyue001 · 308 天前 · 11435 次点击
    这是一个创建于 308 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在自己部署使用 SD 的比较多。

    但是部署 LLM 的有没有?

    开源的 LLM 大模型,一个比一个能吹牛,实际使用体验怎么样?

    66 条回复    2024-01-25 11:56:59 +08:00
    skyqqcc581
        1
    skyqqcc581  
       308 天前   ❤️ 1
    自行部署的性价比太低了 一个机器的成本 几千 上万 大点的模型 可能得几万才行!

    还需要维护 并且现阶段的开源模型,可能连 Gemini Pro 和 GPT3.5 都打不赢

    个人部署实在没必要 除非是要实现某些商业目的 训练出某些专用得
    Azure99
        2
    Azure99  
       308 天前
    开源大模型比较不错的有 qwen baichuan yi ,也有领域特化的,像 deepseek coder 这种。
    具体看你是什么任务,如果是比较简单的问答 文本生成,或者传统 nlp 任务,又或者你希望在下游微调一些特定任务,那么开源模型是能不错的完成的,但是代码和数学与 gpt 3.5 有明显差距。

    另外推荐一下自己微调的 LLM ,主旨是提供一套公开的 SFT 数据(因为目前大部分中文开源模型只公开了权重,但是训练数据,尤其是指令对齐的数据并不公开,导致从 Base 到 Chat 的复现有一定难度)
    https://github.com/Azure99/BlossomLM
    在线 Demo
    https://blossom-chat.com/
    czfy
        3
    czfy  
       308 天前
    有请 @ShadowPower
    yuyue001
        4
    yuyue001  
    OP
       308 天前
    @Azure99 厉害了。

    请问你的硬件配置是什么样子?
    yuyue001
        5
    yuyue001  
    OP
       308 天前
    @skyqqcc581

    确实门槛比较高,但是性价比不高。
    Azure99
        6
    Azure99  
       308 天前 via Android   ❤️ 2
    @yuyue001 可以选择租卡,训练的话,4090 24G 显存用 lora 就足够微调 7b 甚至 13b 的模型了,一小时不到两块钱,a100 40G 也就 4 块钱,还是可以接受的
    lstz
        7
    lstz  
       308 天前 via Android
    性价比太低,不如直接调阿里云的 api ,限时免费
    Yuhyeong
        8
    Yuhyeong  
       308 天前
    chatglm
    Azure99
        9
    Azure99  
       308 天前
    @skyqqcc581 @lstz 具体还是要看场景的,举个极端的例子,假设是离线跑批量预测的场景(例如生成文章),那么你用 vllm/tgi 一张 4090 推理 7b 的模型,是几乎能达到千 token/s 的,那么一小时能生成 3600k token ,成本只有两块钱,而阿里云上 7b 的模型跑这么多 token 需要花 0.006 * 3600 = 21.6 元。
    另外,假设你需要微调模型的生成风格,直接用 API 也是无法做到的。
    L13
        10
    L13  
       308 天前
    自己部署几乎都是为了个性化微调或者突破 API 的限制,就像推动 SD 发展的很大一股力量是为了搞瑟图,自己玩玩的话一块 4090 推理开源的 LLM 几乎都够了
    stimw
        11
    stimw  
       308 天前
    @Azure99 #5 llama 7b 和 13b 我觉得效果还是不太好
    lstz
        12
    lstz  
       308 天前 via Android
    @Azure99 感谢计算,我最近也有个开源项目要接入大模型,让我思考一下
    Azure99
        13
    Azure99  
       308 天前
    @stimw 因为 llama 在预训练的时候并没有多少中文语料 中文 ppl 会非常高,所以中文任务最好用国产的预训练模型
    ShadowPower
        14
    ShadowPower  
       308 天前
    @czfy 我觉得 @Azure99 说得挺好的
    Giftina
        15
    Giftina  
       308 天前   ❤️ 1
    本地部署 llm 可使用 ollama https://ollama.ai/ ,有一众 llm 可用 https://ollama.ai/library ,可搭配 ollama-webui 使用 https://github.com/ollama-webui/ollama-webui
    ktyang
        16
    ktyang  
       308 天前
    同样有需求,领导让给行政他们搞个,怕泄露信息还得是内网用的,插个眼回头来抄作业~
    shm7
        17
    shm7  
       308 天前   ❤️ 1
    Giftina
        18
    Giftina  
       308 天前   ❤️ 1
    ,我实测在 MacBook Air M1 16G 环境中使用了一些 7b 、10b 、13b 模型,出字效率从高到低,都可以接受,极限基本上是 13b-q6 ,再大一些的模型会出现 oom 无法使用的情况
    QlanQ
        19
    QlanQ  
       308 天前
    @Giftina #18 是不是跑了这些模型,电脑就其他什么都干不了了?
    Giftina
        20
    Giftina  
       308 天前
    @QlanQ ollama 本质上和常规软件没有区别,放在后台没有什么感知,跑 llm 模型的时候别的事情也正常能干。除了 13b 的内存占用比较大,除此之外,我个人觉得没有电脑可感知的卡顿。
    BQsummer
        21
    BQsummer  
       308 天前
    如果要达到 ChatGPT 3.5 的水平, 参数至少要 70B 以上, 哪怕是 4bit 量化, 也需要 40G 以上的显存, 家用 GPU 带不起来; 7B 的模型用起来感觉就是玩具.
    june4
        22
    june4  
       308 天前
    我用来跑文本分类,7b 5bit 足够了,但没 gpu 确实慢,我在老机上 10 多秒才分类一个文章标题和简介,比别的方案慢太多
    siriussilen
        23
    siriussilen  
       308 天前
    @Azure99 基于 yi sft 的吗? 这个微调 llm 有足够 solid 的评估吗?
    yplam
        24
    yplam  
       308 天前 via Android
    基本上所有中文大模型都测了个遍,主观上最好的是 baichuan2 13b ,其次 chatglm ,yi 评分虽然高,但感觉应该是过拟合或者训练数据不行
    kaichen
        25
    kaichen  
       308 天前
    本地跑个 mixtral 替代 chatgpt-3.5 问题不大,可以拿来替代 Immersive Translate 的翻译引擎,用 LM Studio 启动假扮 openai 接口

    还有对一些无规则文本的处理,可以用 7b mistral 给 prompt 处理得到结果,比如分类,提取关键信息
    swulling
        26
    swulling  
       308 天前 via iPhone
    @yplam yi-34B 的 sft 数据有问题,建议用衍生版本。模型的基础效果还是不错的。


    比如 SUS-Chat-34B
    swulling
        27
    swulling  
       308 天前 via iPhone   ❤️ 1
    目前中文开源大参数模型里,效果最好的是 Qwen-72B 和 Deepseek-67B 。

    可惜哪怕是 int4 量化,也需要 50GB 显存才能部署。
    Azure99
        28
    Azure99  
       308 天前 via Android
    @siriussilen demo 是 yi 34b base 做 sft ,推理 demo 4bit 量化过。未量化版本 mtbench 7.30 ,alignbench 5.93 ,至于评估的严谨度,这种 llm as judger 只能做个参考 更多的反应的是是否符合裁判员模型的偏好。

    像那些 ceval mmlu 之类的选择题任务,已经没有评估的意义了,很多"高分"的模型(或者说绝大多数国产模型)都是通过预训练阶段加评估集实现的,然后公关说是无意的语料泄露,懂得都懂。
    levn
        29
    levn  
       308 天前
    使用 Mac Studio 192GB 统一内存甚至能运行 180B 模型
    cwcc
        30
    cwcc  
       308 天前
    有人测试过需要大显存的模型直接使用超大内存可以跑吗(买不了显卡我还买不了内存?)
    Azure99
        31
    Azure99  
       308 天前 via Android   ❤️ 1
    @yplam yi 的 base 模型还是不错的,但是对齐的时候可能用了大量 cot 数据,导致做一些需要直接输出的任务很差,比如抽取?也会给你先分析一通,基本不可用
    siriussilen
        32
    siriussilen  
       308 天前
    @Azure99 为什么用大量 cot 数据会导致直接输出的任务很差啊? 如何定义“直接输出任务”吗? QA 问答么?
    Azure99
        33
    Azure99  
       308 天前   ❤️ 1
    @siriussilen 举一个例子
    SFT 标注数据
    inst:泰山和嵩山哪个高?
    output1:泰山的海拔高度为 1545 米,而嵩山的海拔高度为 1491.71 米。因此,泰山比嵩山高。
    output2:泰山高。
    在这种需要多步推理的任务中,output1 实际上是更易于模型推理的,然而,如果训练数据中都是这种 target ,甚至在指令中明确要求了不要输出无关内容,但依旧标注了推理链路,就会造成下面这种不遵循指令的情况。(本质还是数据样本不够均衡)

    推理
    inst:请判断下面的评论是好评还是差评,好评输出 true ,差评输出 false 。评论:真难看,不推荐购买
    output1:"真难看,不推荐购买"有明显的消极观点,因此是差评,所以,输出 false 。
    output2:false
    假设我们的业务只需要 true 或 false ,那么 output1 实际上不可用。
    YsHaNg
        34
    YsHaNg  
       308 天前
    我在树莓派上跑了羊驼 7b
    eternitym31
        35
    eternitym31  
       308 天前
    qwen-14B ,4bit 量化之后损失不大,有块 16GB 显存的卡就可以部署了。
    siriussilen
        36
    siriussilen  
       308 天前
    @Azure99 我不认为是 cot 有问题,我认为是 sft 的数据配比及多样性有问题,导致在下面 case 中
    “inst:请判断下面的评论是好评还是差评,好评输出 true ,差评输出 false 。评论:真难看,不推荐购买
    output1:"真难看,不推荐购买"有明显的消极观点,因此是差评,所以,输出 false 。
    output2:false”
    模型丧失了指令遵循的能力
    vToExer
        37
    vToExer  
       308 天前   ❤️ 2
    TL;DR
    1. Qwen, baichuan, yi, deepseek coder:这些被认为是比较优秀的开源大模型。其中,baichuan 和 yi 被多次提及,且 baichuan2 13b 被认为是表现最好的。Qwen-72B 和 Deepseek-67B 被认为是目前中文开源大参数模型里,效果最好的。
    2. BlossomLM:这是一个 v 友自己微调的 LLM ,主要提供一套公开的 SFT 数据。
    3. ChatGLM, ChatGLM3:被提及并推荐。
    4. Ollama:一个可以本地部署 LLM 的平台,包括 Llama 2, Code Llama 等模型。
    5. Mixtral:可以本地运行,替代 ChatGPT-3.5 ,用于替代 Immersive Translate 的翻译引擎。
    6. Llama 7b 和 13b:一些 v 友认为这两个模型的效果不太好。
    7. Yi-34B:有 v 友认为其 SFT 数据有问题,推荐使用衍生版本,如 SUS-Chat-34B 。
    Azure99
        38
    Azure99  
       308 天前 via Android
    @siriussilen 是的,我已经强调了本质还是数据样本不够均衡。怀疑他们的数据是蒸馏 chatgpt 搞出来的,蒸馏的时候无脑加了 think step by step ,又没有仔细的人工审查
    lyping
        39
    lyping  
       308 天前
    @Azure99 Demo 很牛了。。请问 blossom-v4-yi-34b 部署需要什么级别硬件
    Azure99
        40
    Azure99  
       308 天前 via Android
    @lyping 能不能跑起来基本只跟显存有关,34b 的模型 4bit 量化后,24G 显存勉强能跑起来,但量化毕竟是有精度损失的。消费级硬件 3090 性价比最高,一张不够就两张,两张不够就四张。
    Revenant
        41
    Revenant  
       307 天前
    @YsHaNg #34 看别人部署评估过,推理速度 1 tokens/s ,纯纯玩具😂😂
    hGaHLRyC
        42
    hGaHLRyC  
       307 天前
    除非你能微调,不然完全不值得自己部署在本地,规模差距太大,本地的效果比大厂提供的要差得多。
    shuimugan
        43
    shuimugan  
       307 天前 via Android
    @cwcc 龟速,大模型很吃带宽,内存带宽现在一般是显存的 1/40 到 1/30 ,用 cpu 跑大模型瓶颈全在带宽上
    imqiyue
        44
    imqiyue  
       307 天前
    @BQsummer 了解下 phi-2 ?
    cwcc
        45
    cwcc  
       307 天前
    @shuimugan 这么讲新的 Mac 是不是很适合跑模型呢,搞个大的统一内存。不过话说回来,买一台大内存的 Mac 花的钱可能比买两张显卡花得都多。。。
    shuimugan
        46
    shuimugan  
       307 天前   ❤️ 3
    @cwcc 也就 ultra 系列的 mac 带宽是比得上显卡的,你买我不推荐,我买我真买……上个月买了个官翻的 192GB 的 m2 ultra ,就是为了本地跑大模型用的,价格也就 4.5w 还能 24 期免息,我还忘记叠加内部员工优惠不然还能再少几千,这样一轮下来还真的比 2 个显卡+其它硬件拼凑一台整机便宜而且省心。

    你买 2 个 4090 也就 48GB 显存,一旦显存不够把模型层一部分卸载到内存就速度骤降,而且双卡通讯损耗也大,现阶段跑个 70B 规格 4bit 量化到头了,除非等 PowerInfer 支持多卡了看看效果。

    4 个 3090 的话机箱大功耗高,更别说噪音了,而且也不知道显卡经历了几个哥布林窟,家用还是不太现实。

    9 楼的举的极端场景就是我的真实案例,我就是拿来给上亿条文本做分类的,算完租卡费用和调用云 api 后发现,还是买个 mac 性价比最高,你要是没这种需求还是租卡好。
    siriussilen
        47
    siriussilen  
       307 天前
    说到 step by step ,有一个 Orca2 的工作,他们对任务的划分不仅仅是 step by step, 还有 direct answer ,recall then generate 等等
    Azure99
        48
    Azure99  
       307 天前 via Android
    @siriussilen orca 是基于 flan 构建的,虽然数据(input)的多样性不错,但任务(instruct)的多样性还是不够强 我记得只有一千多种,所以一般得混合上其他数据集,不然对于输入的鲁棒性太差了,我搞了一个中文的 orca 数据集,有兴趣可以在仓库里看下
    siriussilen
        49
    siriussilen  
       307 天前
    @Azure99 1850 种不算少了吧,中文 orca 数据怎么做的?开源的吗? 还是自己复现了 orca1 的工作?
    siriussilen
        50
    siriussilen  
       307 天前
    @Azure99 而且 orca1 的工作在论文上做精调效果也不差,在指令遵循等方面都有不错的提升,orca2 放出了精调的模型,也可以瞅瞅看看它的能力边界,我认为不算差,是一个开源社区中通用精调相当不错的工作。
    siriussilen
        51
    siriussilen  
       307 天前
    @Azure99 看到介绍了,基于 OpenOrca 处理的
    zhlenmao
        52
    zhlenmao  
       307 天前
    @Azure99 想在文本中抽取不特定长度的信息,比如地址啊什么的,有什么好的推荐和介绍 嘛,谢谢
    Azure99
        53
    Azure99  
       307 天前
    @siriussilen 1800 种多么?基本都是改写、翻译、推理、抽取这类比较传统的任务,最常用的 coding 和 role playing 是缺失的。
    此外,在真实的 c 端场景里,用户往往不会那么精心的编写 prompt ,比如"请详细的为我介绍一下大型语言模型是什么",用户的 prompt 可能是"啥是大语言模型",甚至语义、标点都不明确。如果只用这种 input 非常工整的数据训练,那么对于真实人类的输入的鲁棒性就会很差。当然,这不是贬低 orca 的工作,而是说在混合数据的时候,应该特别关注任务的多样性和输入的多样性,不能仅仅依赖单一数据集。
    实际上,orca 的"良好"表现基本只存在于论文精心编写的 prompt 中,换成随意的输入就歇菜了。

    举例
    prompt: whats large lm

    blossom: "LM" typically stands for "language model." In the context of artificial intelligence and natural language processing, a large LM refers to a language model that has been trained on a large amount of data and has a high number of parameters. These models are designed to understand and generate human-like text based on the input they receive. xxx 后面还有一些内容,省略。

    orca2: I'm sorry, I don't understand your question. Could you please rephrase it or provide more context?

    再举一个 case ,带有逻辑陷阱的推理任务,一样无法完成。
    prompt: Joe has 10 apples. He washed 3 apples. How many apples does he have now?

    blossom: Joe initially had 10 apples, and after washing 3 apples, he still has 10 apples. Washing the apples does not reduce their quantity.

    orca2: Given:
    Joe has 10 apples
    He washed 3 apples
    Goal: How many apples does he have now?
    Steps:
    To find the number of apples Joe has now, we need to subtract the number of washed apples from the number of original apples.
    We can use the subtraction algorithm to do this.
    10
    - 3
    ----
    7
    此处省略一些内容
    ### Final answer: Joe has 7 apples now.
    Azure99
        54
    Azure99  
       307 天前
    @zhlenmao 对于没有标注团队的个人来说,最简单的方法还是蒸馏 chatgpt ,你可以先找一些需要抽取的文本( 1k 条足够),然后让 chatgpt 来完成这个任务,并把数据收集起来(最好人工核对一下正确性),然后在开源模型上微调,虽然违反了 openai 的 tos ,但目前社区基本都是这么做的。
    zhlenmao
        55
    zhlenmao  
       307 天前
    @Azure99 试了下您的那个 demo ,蛮不错的啊。能不能私下交流学习下呢?我蛮好奇,您这是用的云还是自己的设备呢?
    siriussilen
        56
    siriussilen  
       307 天前
    是这样,我们都知道 sft 的时候需要保证样本的多样性以及使用高质量的样本是吧,以及你在上面也提到了现有的大部分 sft 工作就是把 chatgpt 或者人类编写的高质量回复作为一个 teacher 模型来指导相对小模型的学习。Orca 的意义在于给你了一种看似还不错的数据加工方法,让你能够在某一批通用数据的基础上使用这种方式组织样本后能够最大限度发挥 teacher 的能力,通过 sft 的方式迁移到小模型上还能取得一个不错的效果。Orca 也只是在 Flan 工作的基础上证明这条技术路线的有效性而已。

    我刚刚看了一下您的数据精调模型( blossom-v4-qwen-14b )和其他通用精调模型( qwen-14b-chat )的对比
    我看在你的 github 里 AlignBench 评估中,blossom-v4-qwen-14b 是 5.66 分,qwen-14b-chat 是 5.41 分。
    但是我在 Align Bench 的 github ( https://github.com/THUDM/AlignBench )中看到的评测信息,qwen-14b-chat 是 5.98 分,这个怎么理解啊?
    siriussilen
        57
    siriussilen  
       307 天前
    @Azure99 求解释下上面的信息👆
    siriussilen
        58
    siriussilen  
       307 天前
    @Azure99 看错了,5.98 是某个单项的。不是总分,如果只看这两个评测结果来看的话,确实感觉这批数据的效果还不错,不过我感觉还是说不清这个收益的提升是因为你的数据多样性、高质量带来的,还是因为引入中文语料的所带来提升,感觉再补充更多的评测证明工作的有效性会更好一点,已 star
    Azure99
        59
    Azure99  
       307 天前 via Android
    @siriussilen 首先得澄清一下,我并没有任何贬低 orca 工作的意思,只是说由于 flan 的局限性,数据集的指令多样性并不丰富,所以才需要引入其他的数据来弥补这一块。

    训练模型主要用到了 orca wizard math chat 四种数据,wizard 基本就是靠不断的 self instruct 来变异指令。orca(flan)的指令不够多样,但数据多样(上下文),而 wizard 的指令多样但数据不够多样(self instruct 的弊端),他们两个刚好互补。
    个人的实验中发现,在不断增加 wizard 的比重时,常规任务表现更好,但阅读理解 抽取 文档问答这种带上下文的任务更差。如果增加 orca 的比重,结果相反。
    math 数据集没什么特殊的。
    只用 orca wizard 和 math 的话,还有两个很欠缺的点,一个是人类输入的鲁棒性,另一个是多轮对话,chat 数据集是基于 share gpt 重新构建的,这批数据的输入完全由人类产生且由用户主动分享,先天的就过滤了很多简单问答。(实际上只用 chat 数据,就能达到目前指标的 90%,但是阅读理解这类任务稍弱)。

    由于 chat 数据量远少于其他数据,最终训练的时候用了多阶段训练,这个可以搜一下 有不少人这么搞。
    还有一个就是输出风格的一致性,最早的版本我尝试直接用 sharegpt 的数据来训练(vicuna 的做法),但是原始 sharegpt 的 output 是来自多个不同 chatgpt 版本的,效果并不太好,于是我做了另一个实验,一批用 3.5 0301 0613 和 davinci 多种模型的蒸馏结果混合,一批只用 0613 ,发现只用 0613 的效果明显好于混合来源的,这也是为什么我的所有数据都要重新用同一个模型蒸馏的原因。
    这个问题其实很好理解,像那个泰山和嵩山哪个高的问题,0613 倾向于列举高度然后推理谁高,而 davinci 倾向于直接输出谁高,如果把他们混到一起训练,推理的一致性自然会下降,训练时也能很直观的看到 loss 震荡更严重。

    关于评估,实际上目前所有的开放评估集的方式都已经不可信了,太多人靠训练阶段加入评估集来作弊。mtbench alignbench 这种基于 llm 裁判的评估,实际上也是在测与裁判员模型的偏好,局限性非常大。
    这个项目是个人业余搞着玩的,所有的数据蒸馏,训练都是自费,像训练还是在单卡上用 qlora 跑的,如果跑的起全量 sft ,效果可能还有提升空间。但目前确实是囊中羞涩了,也没有那么多时间和精力去做外围的事情 还请见谅。
    zhlenmao
        60
    zhlenmao  
       306 天前
    https://cn.v2ex.com/t/999563#reply52 类似的需求,4*4090 还是 4*A100?够用就好,有指点下的?
    Azure99
        61
    Azure99  
       306 天前 via Android
    @zhlenmao 训练可以租卡,推理用 vllm 13b 左右的模型两张 4090 足够,文档问答这类任务并不难
    zhlenmao
        62
    zhlenmao  
       306 天前
    @Azure99 谢谢 ^-^
    sl0000
        63
    sl0000  
       306 天前
    指的是个人 PC 部署吧, 4090 速度都很慢, 长时间开着费电, 用的时候再开嫌麻烦.
    jifengg
        64
    jifengg  
       305 天前   ❤️ 1
    这个帖子得收藏起来以后慢慢看
    7d6a4
        65
    7d6a4  
       305 天前   ❤️ 1
    ## 本地化大模型简单方案
    - gpt4all
    > 配套工具最完善
    > 适配 openai-python sdk
    - ollama
    > Go 生态的配套
    - llamafile
    > llamp.cpp + Cosmopolitan Libc 工程化 a file
    > 适配 openai-python sdk

    - [llama-cpp-python]( https://github.com/abetlen/llama-cpp-python)
    > OpenAI-like API
    > 支持视觉
    > 支持 llava1.5 家族多模态模型 图片加文本


    > 核心都是 llama.cpp 其作者写了个 ML 的 c 库 ggml
    > 有高端显卡可以考虑 exllama

    > [yc 讨论贴]( https://news.ycombinator.com/item?id=36780186)

    > [redit 大模型本地化指南]( https://www.reddit.com/r/LocalLLaMA/wiki/index/)

    ## 开源大模型
    - 全
    https://github.com/Hannibal046/Awesome-LLM
    - 高效
    https://github.com/horseee/Awesome-Efficient-LLM
    - 商用
    https://github.com/eugeneyan/open-llms
    - 中文
    https://github.com/HqWu-HITCS/Awesome-Chinese-LLM
    kennylam777
        66
    kennylam777  
       302 天前
    Deepseek 34B 用來輔助 programming 也不錯, Exllamav2 處理過後在本地環境 4090 能跑, 起碼短問題比 ChatGPT 快一點也不怕私人代碼外流
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.