最近正好关注到了meta发布的新大模型llama3.1,于是抱着好奇的态度来试一下。
近期,Meta发布了其最新的大模型——Llama 3.1。作为一名科技爱好者和人工智能的追随者,我迫不及待地想要了解这一新模型的性能和特点。本文将带你一起探索Llama 3.1的亮点,分析其在人工智能领域的潜在影响,以及我对其前景的个人见解。
一、Llama 3.1 的发布背景
Meta一直在人工智能领域积极探索和创新。Llama系列作为Meta的重要研究成果,一直备受关注。从最初的Llama,到后来的Llama 2,再到今天的Llama 3.1,Meta在大模型研发方面的步伐稳步推进。Llama 3.1的发布,不仅是对前代模型的优化和升级,更是Meta在AI技术发展中的一次重要尝试。
二、Llama 3.1 的技术特点
Llama 3.1在多个方面进行了改进和优化,以下是其主要技术特点:
更大的参数规模:Llama 3.1在参数规模上进行了扩展,使其具备更强的学习和推理能力。这意味着它可以处理更复杂的任务,并在更多领域展现其优势。
优化的训练算法:新模型采用了更为先进的训练算法,使其在相同计算资源下,能够达到更高的精度和效率。
多语言支持:Llama 3.1加强了对多种语言的支持,这使得它在跨语言任务中表现出色,能够更好地服务于全球用户。
增强的安全性和隐私保护:Meta在Llama 3.1中引入了更严格的安全和隐私保护机制,确保用户数据在使用过程中的安全性。
三、注册huggingface和申请使用
Hugging Face下载:
平台特点:Hugging Face是一个广受欢迎的机器学习平台,提供了丰富的预训练模型和工具,方便用户在其生态系统中进行模型的下载和部署。
使用流程:用户可以通过Hugging Face的官方网站,找到Llama 3.1模型页面,然后使用transformers库或datasets库轻松下载和使用模型。整个流程对于已经熟悉Hugging Face平台的用户来说相对简单。
文档与支持:Hugging Face提供了详细的文档和社区支持,用户可以通过官方文档、论坛和GitHub仓库找到解决方案。
Meta下载:
平台特点:Meta通常通过其自己的研究门户或GitHub发布模型和相关代码。这些资源通常直接面向研究人员和开发者。
使用流程:从Meta下载模型可能需要访问特定的研究门户或GitHub仓库。用户需要手动下载模型文件并进行配置,相对来说可能需要更多的技术背景和操作步骤。
文档与支持:Meta会提供相应的技术文档和研究论文,但社区支持相对较少,更多的是面向具备一定技术能力的用户。
在Files and versions里面填写申请。
我试过,如果国家填写China的话,会被拒。没办法只能写USA了。基本几分钟就通过了。
四、下载
下载之所以会单独列出来,因为我试过很多种下载方式,失败的多数。因为每一个模型都非常大,所以非常耗时。
1、通过Transformer库下载
这也是我在用的,挺好用,就是要做好文件夹的管理。因为默认是下载到用户文档下.cache的,于是会把系统盘搞的很大。
具体代码如下:
from huggingface_hub import snapshot_download
from huggingface_hub import login
import os
login(token="hf_Lipu*********************hCIJ")
snapshot_download(
repo_id="meta-llama/Meta-Llama-3.1-8B-Instruct",
local_dir="D:/vscodeProjects/huggingface/hub/meta-llama/Meta-Llama-3.1-8B-Instruct",
max_workers=8
)
我将模型存放在D盘中,并且打开梯子,然后下载速度还是比较快的。
2、通过网页下载
如果对自己的浏览器有信心的话,当然可以通过网页下载。
其实等待的时间也差不多
五、部署
在使用Llama 3.1模型时,硬件配置的差异会对运行速度产生显著影响。拥有NVIDIA RTX 3080 16GB显卡的用户可以使用CUDA加速,在这种配置下,每条文本生成大约需要1分钟。而如果使用Intel i7 12800的CPU,则可能需要约5分钟。这表明即使在没有高端显卡的情况下,仍然可以使用NPU或者CPU来运行模型,只是相对而言速度会慢一些。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
local_model_dir = "D:/vscodeProjects/huggingface/hub/meta-llama/Meta-Llama-3.1-8B-Instruct/"
# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(local_model_dir,device_map="cuda", torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(local_model_dir)
# 创建文本生成管道
text_generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device_map="auto"
)
# 测试文本生成
result = text_generator("用Python写一个汉诺塔的程序", max_length=500)
print(result)
以下是生成的结果:
#用Python写一个汉诺塔的程序
import time
def hanoi(n, x, y, z):
if n > 0:
hanoi(n - 1, x, z, y)
print(f"Move disk {n} from peg {x} to peg {y}")
hanoi(n - 1, z, y, x)
def main():
n = int(input("Enter the number of disks: "))
print("Hanoi Tower:")
hanoi(n, \'A\', \'C\', \'B\')\n
if __name__ == "__main__":
main()