赞
踩
大家好,我是程序锅。
一个月前,Meta发布了开源大模型llama3系列,在多个关键基准测试中优于业界 SOTA 模型,并在代码生成任务上全面领先。
和往常剧本类似,llama系列对中文支持力度不够。于是开发者们便开始了本地部署和基于中文语言训练。
在这里推荐一个项目:
项目地址:https://github.com/naklecha/llama3-from-scratch
这个项目发布了一个从零开始实现llama3的库,包括跨多个头的注意力矩阵乘法、位置编码和toekn化等等技术有非常详细的解释。
完成学习这个项目,你不仅会对llama3的网络结构非常了解,并且可以举一反三,自己分析其它开源大模型的网络架构。
下面举几个项目中涉及到的知识点。
prompt = "the answer to the ultimate question of life, the universe, and everything is "
tokens = [128000] + tokenizer.encode(prompt)
print(tokens)
tokens = torch.tensor(tokens)
prompt_split_as_tokens = [tokenizer.decode([token.item()]) for token in tokens]
print(prompt_split_as_tokens)
[128000, 1820, 4320, 311, 279, 17139, 3488, 315, 2324, 11, 279, 15861, 11, 323, 4395, 374, 220]
['<|begin_of_text|>', 'the', ' answer', ' to', ' the', ' ultimate', ' question', ' of', ' life', ',', ' the', ' universe', ',', ' and', ' everything', ' is', ' ']
embedding_layer = torch.nn.Embedding(vocab_size, dim)
embedding_layer.weight.data.copy_(model["tok_embeddings.weight"])
token_embeddings_unnormalized = embedding_layer(tokens).to(torch.bfloat16)
token_embeddings_unnormalized.shape
torch.Size([17, 4096])
等等还有很多很多,从llama输入到最后softmax输入,此项目均有代码解释与实战。
Talk is cheap,show me the code。如果你熟悉Transformer的原理,赶紧动手学起来吧!
项目地址:https://github.com/naklecha/llama3-from-scratch
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。