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

使用 llama3:70b 本地化部署, 100 人左右的并发,大概需要多少块 4090 才能满足?

  •  
  •   leeum · 2024-04-29 10:25:21 +08:00 · 11305 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有实操过本地化部署开源 llm 的老哥?这个需要大概多少的算力?

    52 条回复    2024-07-09 15:12:38 +08:00
    timeance
        1
    timeance  
       2024-04-29 10:26:26 +08:00
    你先测一下大概每秒有多少 token ,然后换算一下就大概知道了
    hi2hi
        2
    hi2hi  
       2024-04-29 10:26:33 +08:00
    这,为什么还想着用 4090 呢?找论坛看看,用专业卡跑
    levn
        3
    levn  
       2024-04-29 10:36:24 +08:00
    云 gpu 服务器租一天测试一下不就知道了
    kenvix
        4
    kenvix  
       2024-04-29 11:45:44 +08:00
    根据我用 VLLM 部署的结论,4090 的显存不够用
    herozzm
        5
    herozzm  
       2024-04-29 11:46:46 +08:00
    最少 2 块 4090 能基本跑起来,如果是 100 并发,就不太清楚了
    murmur
        6
    murmur  
       2024-04-29 11:47:02 +08:00
    如果没有精挑的必要,建议一个公司租几个 gpt4 或者文心一言,使用成本和部署难度比自己 llama 简单太多
    herozzm
        7
    herozzm  
       2024-04-29 11:49:11 +08:00
    @murmur 本地模型远比 api 省钱
    iOCZS
        8
    iOCZS  
       2024-04-29 11:51:49 +08:00
    100 并发。。。人很多啊
    t41372
        9
    t41372  
       2024-04-29 12:09:46 +08:00 via Android
    有那种 host 像 llama3 70b 这种开源模型的 serverless api 接口,比 open AI 的要便宜很多,速度也会比自己部署一台要快很多。我知道 groq 上面 llama3 70b 的价格是差不多每一百万个 token 0.5 刀左右的样子,不知道会不会比自部署便宜。
    我记得像是 ollama 这种好象是还不支持并发的,所以很多人同时用体验可能不会太好。
    echoless
        10
    echoless  
       2024-04-29 12:25:49 +08:00 via Android
    ollama 下个版本才支持并发
    lovestudykid
        11
    lovestudykid  
       2024-04-29 12:31:11 +08:00
    自建的话要保证并发,可能有很长闲置时间
    tap91624
        12
    tap91624  
       2024-04-29 13:12:44 +08:00
    4090 没 nvlink 多卡会比单卡慢的
    R4rvZ6agNVWr56V0
        13
    R4rvZ6agNVWr56V0  
       2024-04-29 13:15:37 +08:00
    4090 跑 70B 的模型非常吃力,直接上 A100 吧
    msn1983aa
        14
    msn1983aa  
       2024-04-29 13:22:43 +08:00
    挑战老黄的刀法? a100 上起才行
    whileFalse
        15
    whileFalse  
       2024-04-29 13:35:40 +08:00
    确认是有 100 并发,还是你们有 100 个要使用的人?
    gaobh
        16
    gaobh  
       2024-04-29 13:42:31 +08:00 via iPhone
    你去换算,1 秒多少人用,大概要出多少 token ,看一下
    winglight2016
        17
    winglight2016  
       2024-04-29 13:43:07 +08:00
    30G 的 llm ,显存至少 40g 吧。lz 说清楚到底是 100 个用户,还是 100 个并发,如果是后者,为什么不用 gpt-4 ?毕竟,这并发量私有加自建投资太大,lz 提到 4090 ,大概率没什么 AI 经验,还是上云靠谱。
    lizhisty
        18
    lizhisty  
       2024-04-29 13:45:28 +08:00
    @echoless 下个版本啥时候发布啊
    lizhisty
        19
    lizhisty  
       2024-04-29 13:46:18 +08:00
    @lovestudykid 闲置时间是什么意思
    lizhisty
        20
    lizhisty  
       2024-04-29 13:47:32 +08:00
    @winglight2016 大哥,100 个并发是不是就吃力了,1 张 A100 能支持 70b 的一秒 10w token 吗
    proxyai
        21
    proxyai  
       2024-04-29 13:52:02 +08:00
    @t41372 groq 还没有收费吧
    lovestudykid
        22
    lovestudykid  
       2024-04-29 14:16:42 +08:00
    @lizhisty #17 峰值 100 人的话,平均人数可能远远不到啊,其他硬件也就算了,显卡这么贵,闲置一分钟都是钱。
    winglight2016
        23
    winglight2016  
       2024-04-29 15:13:06 +08:00
    @lizhisty 没试过 70b 呀,支持是一回事儿,多久能响应是另一回事儿。云上开一个 GPU 服务器试试不就知道了?

    我用 ollama 在 cpu 上跑 8b ,也不是不能用,至少比 llama2 快多了
    nathandoge
        24
    nathandoge  
       2024-04-29 17:49:13 +08:00
    显存太低,别折腾了,上 h100
    fionasit007
        25
    fionasit007  
       2024-04-29 18:23:54 +08:00
    100 并发对于本地化部署的 llm 是相当大的压力了,先不说计算 token 之类的,怎么也得几十张才能满足吧,成本太高了
    lizhisty
        26
    lizhisty  
       2024-04-29 18:28:49 +08:00
    @fionasit007 为啥 100 并发就压力大,一个问题也是计算,100 个也是计算啊
    chanChristin
        27
    chanChristin  
       2024-04-29 18:29:26 +08:00
    @lizhisty #18 下班之后的时间没人用。
    jfcherng
        28
    jfcherng  
       2024-04-29 18:36:52 +08:00
    @lizhisty #26 ... 按你這麼說,那無限並發也沒什麼壓力
    locoz
        29
    locoz  
       2024-04-29 19:19:56 +08:00 via Android
    @lizhisty #22 每个计算都是独立的,又不是一个算好了其他 99 个就都好了。假设处理一个请求需要一张显卡满载运算,那一百个并发请求就得要一百张显卡,压力当然大…
    zjhzxhz
        30
    zjhzxhz  
       2024-04-29 19:29:17 +08:00
    我觉得 4090 挺好,速度也不错。让上 A100 的给大家看一下成本再说话。

    fnd
        31
    fnd  
       2024-04-29 19:32:52 +08:00
    上面说的都太业余了,说点实际的。

    首先,100 个人用≠100 并发,要结合你的业务场景去评估实际需要支持多少并发。比如:每个人是时时刻刻一直用?还是 5%的时间段在用?重合度多少?峰值可能是多少?
    其次,现在并发数的成本很高,并不是一定要支持峰值的并发。当前业内通用的做法是只支持特定的并发,然后做一个队列进行并发控制。如果并发满了一定数量内的先队列等待,等待队列也满了就提示并发数超限稍后再试之类的。
    然后,4090 就先不说并发了,70b 的模型都不一定能跑起来,可能得上 A100 。

    实际并发数的计算得看单卡每秒 tokens ,然后根据业务场景预估单次请求可能的 tokens 大小,计算得到单卡并发。
    robbaa
        32
    robbaa  
       2024-04-29 22:29:42 +08:00   ❤️ 2
    给你个参考:
    环境:双 3090 + nvlink + docker
    命令:ollama run llama3:70b --verbose
    刚刚好可以塞下。

    ollama-1 | ggml_cuda_init: found 2 CUDA devices:
    ollama-1 | Device 0: NVIDIA GeForce RTX 3090, compute capability 8.6, VMM: yes
    ollama-1 | Device 1: NVIDIA GeForce RTX 3090, compute capability 8.6, VMM: yes
    ollama-1 | llm_load_tensors: ggml ctx size = 0.83 MiB
    ollama-1 | llm_load_tensors: offloading 80 repeating layers to GPU
    ollama-1 | llm_load_tensors: offloading non-repeating layers to GPU
    ollama-1 | llm_load_tensors: offloaded 81/81 layers to GPU
    ollama-1 | llm_load_tensors: CPU buffer size = 563.62 MiB
    ollama-1 | llm_load_tensors: CUDA0 buffer size = 18821.56 MiB
    ollama-1 | llm_load_tensors: CUDA1 buffer size = 18725.42 MiB


    测试三次结果:

    total duration: 25.820168178s
    load duration: 1.436783ms
    prompt eval count: 14 token(s)
    prompt eval duration: 483.796ms
    prompt eval rate: 28.94 tokens/s
    eval count: 448 token(s)
    eval duration: 25.203697s
    eval rate: 17.78 tokens/s


    total duration: 30.486672187s
    load duration: 1.454596ms
    prompt eval count: 479 token(s)
    prompt eval duration: 2.025687s
    prompt eval rate: 236.46 tokens/s
    eval count: 496 token(s)
    eval duration: 28.322837s
    eval rate: 17.51 tokens/s


    total duration: 21.176605423s
    load duration: 2.629646ms
    prompt eval count: 529 token(s)
    prompt eval duration: 2.325535s
    prompt eval rate: 227.47 tokens/s
    eval count: 324 token(s)
    eval duration: 18.622355s
    eval rate: 17.40 tokens/s
    ispinfx
        33
    ispinfx  
       2024-04-29 23:18:09 +08:00
    @robbaa QPS 呢
    thorneLiu
        34
    thorneLiu  
       2024-04-30 01:33:26 +08:00 via Android
    多卡 A30
    proxychains
        35
    proxychains  
       2024-04-30 09:20:06 +08:00
    @lizhisty #19 晚上没人用, 但仍要开机. 期间的资源就是闲置浪费了.
    TerranceL
        36
    TerranceL  
       2024-04-30 09:31:50 +08:00
    推荐一下我司产品,目前性价比可能比较高,由服务器也有小型工作站解决方案 aW5mb0BoZXhhZmxha2UuYWk=
    whusnoopy
        37
    whusnoopy  
       2024-04-30 09:34:08 +08:00
    在 m3max 64G 的 MacBook Pro 上跑着玩过,速度有点慢,但也还能用,大概吃掉 40G+ 内存
    llama3:8b 的模型跑起来就挺快的
    cuteguy
        38
    cuteguy  
       2024-04-30 10:06:44 +08:00
    @whusnoopy 这样是 ultra 192G 是不是能快不少?
    whusnoopy
        39
    whusnoopy  
       2024-04-30 10:53:51 +08:00
    @cuteguy 没在 M2 Ultra 192G 上试过,不过可能差异不会那么大?因为

    1. 内存大小只要能把模型加载上,额外的内存容量对处理速度并没有啥帮助
    2. 内存速度上,M3 Max 满血版的内存带宽是 400GB/s ,残血版是 300GB/s ,64G 的 M3 Max 已经是满血版了
    3. M3 还没出 Ultra ,看评测,M3 Max 的单核比 M2 Ultra 还略强一点,多核是要弱,但可能没差那么多?
    mscsky
        40
    mscsky  
       2024-04-30 11:23:46 +08:00
    上面没人说量化?用 q4 量化非常快
    jwangkun
        41
    jwangkun  
       2024-04-30 14:59:56 +08:00
    目前我用的 Quadro RTX 8000 ,并发没测过,不知道怎么压测
    BQsummer
        42
    BQsummer  
       2024-04-30 15:22:12 +08:00
    1. llama3 70b 需要 142G 显存,4090 是 24G 显存,不量化得 6 张卡,https://llm.extractum.io/list/?query=llama3 ,可以在这个网站查下大概的显存占用,8bit 量化也要 75G ,4bit 量化 40G ,4090 不合适。31L 的 llama3:70b 是“quantization
    4-bit”的: https://ollama.com/library/llama3:70b
    2. 显存不是重点,重点是推理速度,取决于模型、显卡、还有部署模型的服务,比如 vllm ,都会做推理优化,而且推理速度和并发不是成线性反比的,所以实际的推理速度真的只有在跑下来才知道
    3. 主流生产环境部署还是 vllm 多一点,我有在 reddit 看到吐槽 ollama 并发下卡死的,虽然我也用 ollama 测试一些模型,用起来是真方便
    snuglove
        43
    snuglove  
       2024-04-30 15:51:28 +08:00
    到底是内存跑的 还是显存跑的啊 我现在用的内存跑的很好啊
    robbaa
        44
    robbaa  
       2024-04-30 20:37:15 +08:00
    @ispinfx ollama 目前是单线程模型。
    ab 工具测试 10 并发 10 请求,耗时 312 秒, 没有并发可言
    robbaa
        45
    robbaa  
       2024-04-30 20:46:15 +08:00
    ab -c 10 -n 10 -p ./testchat.json -T "application/json" -H 'Content-Type: application/json' http://localhost:11434/api/chat

    testchat.json 中内容
    ```
    {
    "model": "llama3:70b",
    "stream": true,
    "frequency_penalty": 0,
    "presence_penalty": 0,
    "temperature": 0.6,
    "top_p": 1,
    "messages": [
    {
    "content": "安排一个南京的 2 天的旅游攻略,用中文回答",
    "role": "user"
    }
    ]
    }
    ```
    imFu
        46
    imFu  
       2024-04-30 22:42:05 +08:00
    @robbaa 哥们有啥能够支持并发的推理框架推荐的吗?
    leeum
        47
    leeum  
    OP
       2024-05-01 09:16:35 +08:00 via iPad
    robbaa
        48
    robbaa  
       364 天前
    @leeum 测试版还是有问题,结果不理想。

    70b
    单次请求:17~20s
    并行 4 ,4 个请求,4 个成功,平均 30s
    并行 6 ,6 个请求,6 个成功,平均 33s
    并行 8 ,8 个请求,8 个成功,平均 41s
    并行 9 ,9 个请求,9 个成功,平均 130s (确实如此)
    并行 10 ,10 个请求,10 个成功,平均 142s
    并行 11 ,11 个请求,11 个成功,平均 150s

    8b
    并行 8 ,8 个请求,8 个成功,平均 14s
    并行 9 ,9 个请求,6 个成功,平均 25s
    并行 10 ,10 个请求,10 个成功,平均 32s
    并行 11 ,11 个请求,11 个成功,平均 34s
    并行 12 ,返回异常

    测试多了,还会出现“话痨”现象。正常回复在 40k 左右,“话痨”状态在 380k 以上

    ======

    @imFu 我初学状态
    joetao123
        49
    joetao123  
       348 天前
    2 个 A6000 Ada 或者 4 张 4090 的图形工作站是否可以跑 qwen:72b 的推理?如果是微调的话,需要多少资源?哪位大神能给点建议。
    wsbqdyhm
        50
    wsbqdyhm  
       344 天前
    @fnd 我用 m1 max 64g 部署了 llama3:70b ,感觉还可以,会比 chagtp3.5 稍慢,特别是第一次问问题的时候
    g0147456g
        51
    g0147456g  
       307 天前
    4090 估计是完全不行。4bit 量化下仍然需要 40+GB 的显存,而 4090 不支持 nvlink ,难以多卡并行
    keakon
        52
    keakon  
       296 天前
    双 4090 用 vllm 部署 qwen2:72b-int4 ,最低大概要 42GB 显存。占满 48GB 显存的情况下,32 并发下大概每秒 300 tokens 。
    用 ollama 部署,大概要 40GB 显存。2 并发大概每秒 30 tokens ,再增加并发性能反而下降。
    但是具体到单个请求,只有 15 tokens/s 的样子,大概是 gpt-4o 的 1/4 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2183 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:47 · PVG 19:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.