首页 >>  正文

map中key和value的类型

来源:baiyundou.net   日期:2024-09-21

明敏 发自 凹非寺

量子位 | 公众号 QbitAI

马斯克说到做到开源Grok-1,开源社区一片狂喜。

但基于Grok-1做改动or商用,都还有点难题:

Grok-1使用Rust+JAX构建,对于习惯Python+PyTorch+HuggingFace等主流软件生态的用户上手门槛高。

△图注:Grok登上GitHub热度榜世界第一

Colossal-AI团队最新成果,解大家燃眉之急,提供方便易用的Python+PyTorch+HuggingFace Grok-1,能将推理时延加速近4倍

现在,模型已在HuggingFace、ModelScope上发布。

HuggingFace下载链接:

https://huggingface.co/hpcai-tech/grok-1

ModelScope下载链接:

https://www.modelscope.cn/models/colossalai/grok-1-pytorch/summary

性能优化

结合Colossal-AI在AI大模型系统优化领域的丰富积累,已迅速支持对Grok-1的张量并行。

在单台8H800 80GB服务器上,推理性能相比JAX、HuggingFace的auto device map等方法,推理时延加速近4倍

使用教程

下载安装Colossal-AI后,启动推理脚本即可。

./run_inference_fast.sh hpcaitech/grok-1

模型权重将会被自动下载和加载,推理结果也能保持对齐。如下图中Grok-1 greedy search的运行测试。

更多详情可参考grok-1使用例:

https://github.com/hpcaitech/ColossalAI/tree/main/examples/language/grok-1

庞然大物Grok-1

此次开源,xAI发布了Grok-1的基本模型权重和网络架构。

具体来说是2023年10月预训练阶段的原始基础模型,没有针对任何特定应用(例如对话)进行微调。

结构上,Grok-1采用了混合专家(MoE)架构,包含8个专家,总参数量为314B(3140亿),处理Token时,其中的两个专家会被激活,激活参数量为86B。

单看这激活的参数量,就已经超过了密集模型Llama 2的70B,对于MoE架构来说,这样的参数量称之为庞然大物也毫不为过。

更多参数信息如下:

  • 窗口长度为8192tokens,精度为bf16
  • Tokenizer vocab大小为131072(2^17),与GPT-4接近;
  • embedding大小为6144(48×128);
  • Transformer层数为64,每层都有一个解码器层,包含多头注意力块和密集块;
  • key value大小为128;
  • 多头注意力块中,有48 个头用于查询,8 个用于KV,KV 大小为 128;
  • 密集块(密集前馈块)扩展因子为8,隐藏层大小为32768

在GitHub页面中,官方提示,由于模型规模较大(314B参数),需要有足够GPU和内存的机器才能运行Grok。

这里MoE层的实现效率并不高,选择这种实现方式是为了避免验证模型的正确性时需要自定义内核。

模型的权重文件则是以磁力链接的形式提供,文件大小接近300GB。

值得一提的是,Grok-1采用的是Apache 2.0 license,商用友好

目前Grok-1在GitHub上的标星已达到43.9k Stars。

量子位了解,Colossal-AI将在近期进一步推出对Grok-1在并行加速、量化降低显存成本等优化,欢迎持续关注。

Colossal-AI开源地址:

https://github.com/hpcaitech/ColossalAI

— 完 —

量子位 QbitAI · 头条号签约

","gnid":"920da7dff27ee6d21","img_data":[{"flag":2,"img":[{"desc":"","height":914,"title":"","url":"https://p0.ssl.img.360kuai.com/t01b5b6a79a96943a07.jpg","width":1280},{"desc":"","height":"591","title":"","url":"https://p0.ssl.img.360kuai.com/t01784e5a56f3430ba8.webp","width":"1053"},{"desc":"","height":"465","title":"","url":"https://p0.ssl.img.360kuai.com/t014acde910926c5722.webp","width":"1080"},{"desc":"","height":"535","title":"","url":"https://p0.ssl.img.360kuai.com/t0181164c98538180fe.webp","width":"1080"},{"desc":"","height":"562","title":"","url":"https://p0.ssl.img.360kuai.com/t01e873537f44077cbf.jpg","width":"1066"}]}],"original":0,"pat":"art_src_3,fts0,sts0","powerby":"pika","pub_time":1711344240000,"pure":"","rawurl":"http://zm.news.so.com/2955c1ee70e7b0a654fd97625a0fca7e","redirect":0,"rptid":"b36223bda03d5408","rss_ext":[],"s":"t","src":"量子位","tag":[{"clk":"ktechnology_1:github","k":"github","u":""}],"title":"3140参数Grok-1推理加速3.8倍,PyTorch+HuggingFace版来了

吴丁琼938java中的map<key,val>,这一组map中val我既有可能是string的也要存bigdecimal的,要怎么定义啊? -
令轻骂13751455357 ______ Object定义 取出的时候用instanceof判断下就行了 其实更好的办法就是都定义成String 需要int(integer)的地方再用Integer.pasaint(String str) 转化一下就行 存bigdecimal 也可以用默认的String为参数的构造函数,new一个就行

吴丁琼938如何得到map中的KEY和VALUE -
令轻骂13751455357 ______ package test;import java.util.*;/** 取得Map中的key的集合用的方法是keySet,返回的是Set,* 取得Map中的value的集合用的方法是values,返回的是Collect.* 值得一提的是,本题中是HashMap,如果改为TreeMap,keySet()方法返回的便会...

吴丁琼938如何通过获取map中的key来获得与key对应的value值,进行运算 -
令轻骂13751455357 ______ hm已是一个HashMap的引用. 如果你知道当前的这个key,可以通过hm.get(key)方法来获得value. 获得key的方法hm.keySet();因为你不知道key是哪个其实该方法就是获得一个key的集合. 具体可以结合以下例子看看,里面有个迭代器用于...

吴丁琼938从数据库中取出的值,循环放入map中,再把map放中list中,问怎样取出map中的key值 -
令轻骂13751455357 ______ 这个问题,看你的代码怎么规范.将数据库中取出的值存如map的value,再把value循环存入list.如果map的key值没有逻辑要求,可以将key字符串设置成迭代参数,如"0","1","2"等,循环如下: for(int i=0;i<length;i++){ String key=""+i; list.add(map.get(key)); }

吴丁琼938请教大神java如何修改list中map的值 -
令轻骂13751455357 ______ 因为map.put("id", i)操作的意义在于 如果map中没有key="id"则添加key="id",对应的value值为i 如果map中已经存在了key="id"的元素,则重新为key="id"对应的value赋新的i值..----------------惭愧的分割线---------------------- 汗乌龙了..没...

吴丁琼938java怎么得到map里面的所有key -
令轻骂13751455357 ______ Map接口提供keySet()方法,可以获取所有key到一个set集合,因为map中的key本身就是set集合,所以和set集合中的特性是一样的.

吴丁琼938java map表里,key值能否映射到多个Value -
令轻骂13751455357 ______ map中的key和value是一一对应的,但是这里的value可以是一个集合,里面可能包含很多值,这样可以实现.使用时,要循环来访问

吴丁琼938判断map键值都有怎么判断 -
令轻骂13751455357 ______ Map map = new HashMap(); Iterator iter = map.entrySet().iterator()用这个方法先判断有没有,再执行put方法 map 和key 是不能重复 但

吴丁琼938JAVA问题:Map.Entry的一般用处是什么? -
令轻骂13751455357 ______ 是为了输出的方便 一般情况下,要输出Map中的key 和 value 是先得到key的集合,然后再迭代(循环)由每个key得到每个value 而Entry可以一次性获得这两个值.

吴丁琼938Go语言map是怎么比较key是否存在的 -
令轻骂13751455357 ______ v, ok := dict[key] // 这句里的 ok = true 时代表 dict 中存在 key

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024