v5-Eagle-7B-HF项目介绍
项目背景
v5-Eagle-7B是由RWKV推出的一个先进的自然语言处理(NLP)模型,主要运行于Huggingface(简称HF)Transformers库中。这个项目的主要目标是利用模型执行各种语言生成任务,如回答问题、内容创建和语言翻译等。
使用许可证
项目采用了Apache 2.0许可证。这意味着用户可以自由使用、修改和分发,但需要在软件中保留原始的版权声明和许可证声明。
模型特性
v5-Eagle-7B模型是基于RWKV和Huggingface的协作开发,旨在提高模型在处理自然语言任务中的性能。虽然目前尚未针对指令微调,但模型已经能够在多种场景下实现良好的表现。
使用说明
在CPU上运行
要在CPU上运行v5-Eagle-7B模型,可使用以下Python代码。该代码展示了如何通过生成提示语并进行自然语言生成:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def generate_prompt(instruction, input=""):
instruction = instruction.strip().replace('\r\n','\n').replace('\n\n','\n')
input = input.strip().replace('\r\n','\n').replace('\n\n','\n')
if input:
return f"""Instruction: {instruction}
Input: {input}
Response:"""
else:
return f"""User: hi
Assistant: Hi. I am your assistant and I will provide expert full response in full details. Please feel free to ask any question and I will always answer it.
User: {instruction}
Assistant:"""
model = AutoModelForCausalLM.from_pretrained("RWKV/HF_v5-Eagle-7B", trust_remote_code=True).to(torch.float32)
tokenizer = AutoTokenizer.from_pretrained("RWKV/HF_v5-Eagle-7B", trust_remote_code=True)
text = "请介绍北京的旅游景点"
prompt = generate_prompt(text)
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate(inputs["input_ids"], max_new_tokens=333, do_sample=True, temperature=1.0, top_p=0.3, top_k=0, )
print(tokenizer.decode(output[0].tolist(), skip_special_tokens=True))
在GPU上运行
在GPU上运行的方法类似,但需要指定使用的浮点精度和设备:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def generate_prompt(instruction, input=""):
...
model = AutoModelForCausalLM.from_pretrained("RWKV/HF_v5-Eagle-7B", trust_remote_code=True, torch_dtype=torch.float16).to(0)
tokenizer = AutoTokenizer.from_pretrained("RWKV/HF_v5-Eagle-7B", trust_remote_code=True)
text = "介绍一下大熊猫"
prompt = generate_prompt(text)
inputs = tokenizer(prompt, return_tensors="pt").to(0)
output = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=1.0, top_p=0.3, top_k=0, )
print(tokenizer.decode(output[0].tolist(), skip_special_tokens=True))
批量推断
项目还支持批量推断,这对于处理多个输入非常有用:
texts = ["请介绍北京的旅游景点", "介绍一下大熊猫", "乌兰察布"]
prompts = [generate_prompt(text) for text in texts]
inputs = tokenizer(prompts, return_tensors="pt", padding=True)
outputs = model.generate(inputs["input_ids"], max_new_tokens=128, do_sample=True, temperature=1.0, top_p=0.3, top_k=0, )
for output in outputs:
print(tokenizer.decode(output.tolist(), skip_special_tokens=True))
项目总结
v5-Eagle-7B项目是一个强大而灵活的NLP工具,允许用户通过HF Transformers库在多种场景下进行高效的自然语言处理任务。其易于使用的API和强大的生成能力使其成为开发人员和研究人员的理想选择。