赞
踩
使用 Meta 的 Llama 3 系列探索 AI 语言模型的最新里程碑。从增加词汇量等进步到使用开源工具的实际实现,本文深入探讨了 Llama 3 的技术细节和基准测试。了解如何在本地部署和运行这些模型,释放它们在消费类硬件中的潜力。
Llama 3 系列简介:语言模型的新时代。凭借 8B 和 70B 大小的预训练基础和聊天模型,它带来了重大进步。其中包括扩展的词汇量,现在为 128k 令牌,提高令牌编码效率并实现更好的多语言文本生成。此外,它还在所有模型中实施了分组查询注意力 (GQA),确保与其前身相比,响应更加连贯和扩展。
此外,Meta 严格的训练方案,仅为 8B 模型就使用了 15 万亿个代币,这表明它致力于突破自然语言处理的界限。随着多模态模型和更大的 400B+ 模型的计划即将到来,Llama 3 系列预示着 AI 语言建模的新时代,有望彻底改变各行各业的各种应用。
您可以点击这里访问模型:https://llama.meta.com/llama3/
HuggingFace 已经推出了对 Llama 3 模型的支持。我们可以使用变形金刚库轻松地从 HuggingFace Hub 中提取模型。您可以安装全精度模型或 4 位量化模型。这是在 Colab 免费层上运行它的示例。
安装 accelerate 和 bitsandbytes 库并升级 transformers 库。
!pip install -U "transformers==4.40.0" --upgrade
!pip install accelerate bitsandbytes
现在我们将安装模型并开始查询。
import transformers
import torch
model_id = "unsloth/llama-3-8b-Instruct-bnb-4bit"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={
"torch_dtype": torch.float16,
"quantization_config": {"load_in_4bit": True},
"low_cpu_mem_usage": True,
},
)
现在向模型发送查询以进行推理。
messages = [ {"role": "system", "content": "You are a helpful assistant!"}, {"role": "user", "content": """Generate an approximately fifteen-word sentence that describes all this data: Midsummer House eatType restaurant; Midsummer House food Chinese; Midsummer House priceRange moderate; Midsummer House customer rating 3 out of 5; Midsummer House near All Bar One"""}, ] prompt = pipeline.tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) terminators = [ pipeline.tokenizer.eos_token_id, pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>") ] outputs = pipeline( prompt, max_new_tokens=256, eos_token_id=terminators, do_sample=True, temperature=0.6, top_p=0.9, ) print(outputs[0]["generated_text"][len(prompt):])
查询的输出:“下面是一个 15 字的句子,总结了数据:
Midsummer House是一家价格适中的中餐馆,在All Bar One附近拥有三星级评级。
您可以将其包装在 Gradio 中以具有交互式聊天界面。安装 Gradio 并运行以下代码。
import gradio as gr messages = [] def add_text(history, text): global messages #message[list] is defined globally history = history + [(text,'')] messages = messages + [{"role":'user', 'content': text}] return history def generate(history): global messages prompt = pipeline.tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) terminators = [ pipeline.tokenizer.eos_token_id, pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>") ] outputs = pipeline( prompt, max_new_tokens=256, eos_token_id=terminators, do_sample=True, temperature=0.6, top_p=0.9, ) response_msg = outputs[0]["generated_text"][len(prompt):] for char in response_msg: history[-1][1] += char yield history pass with gr.Blocks() as demo: chatbot = gr.Chatbot(value=[], elem_id="chatbot") with gr.Row(): txt = gr.Textbox( show_label=False, placeholder="Enter text and press enter", ) txt.submit(add_text, [chatbot, txt], [chatbot, txt], queue=False).then( generate, inputs =[chatbot,],outputs = chatbot,) demo.queue() demo.launch(debug=True)
这是 Gradio 应用程序和 Llama 3 的演示。
Ollama 是另一个用于在本地运行 LLM 的开源软件。要使用 Ollama,您必须下载该软件。
下载后,使用此命令启动本地服务器。
ollama run llama3:instruct #for 8B instruct model
ollama run llama3:70b-instruct #for 70B instruct model
ollama run llama3 #for 8B pre-trained model
ollama run llama3:70b #for 70B pre-trained
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}'
您将收到 JSON 响应。
{
"model": "llama3",
"created_at": "2024-04-19T19:22:45.499127Z",
"response": "The sky is blue because it is the color of the sky.",
"done": true,
"context": [1, 2, 3],
"total_duration": 5043500667,
"load_duration": 5025959,
"prompt_eval_count": 26,
"prompt_eval_duration": 325953000,
"eval_count": 290,
"eval_duration": 4709213000
}
我们不仅发现了语言建模的进步,还发现了 Llama 3 的有用实现策略。现在,由于采用了 HuggingFace Transformers 和 Ollama 等技术,现在可以在本地运行 Llama 3,这为各行各业开辟了广泛的应用。展望未来,Llama 3 的开源设计鼓励创新和可访问性,为世界各地的开发人员都可以访问高级语言模型打开了大门。
本文中显示的媒体不归 Analytics Vidhya 所有,由作者自行决定使用。
来源:https://www.analyticsvidhya.com/blog/2024/04/how-to-run-llama-3-locally/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。