Llama 2-7B 模型生产限量 511 代币

问题描述 投票:0回答:1

我面临 Llama 2-7B 模型的问题,即输出始终仅限于 511 个代币,尽管该模型理论上应该能够产生最多 4096 个代币的输出。

我尝试将 max_tokens 参数设置为更高的值,例如 3000,并通过从模型的总令牌限制(4096 个令牌)中减去提示令牌来计算可用令牌。然而,尽管进行了这些调整,我仍然收到上限为 511 个代币的输出。

这是我用来与模型交互的代码片段:

导入psutil 导入操作系统 进口警告 从 llama_cpp 导入 Llama

抑制警告

warnings.filterwarnings(“忽略”)

模型路径

model_path =“C:/Llama_project/models/llama-2-7b-chat.Q2_K.gguf”

加载模型

llm = 骆驼(模型路径=模型路径)

设置助手行为的系统消息

system_message =“你是一个有用的助手。”

提问功能

def ask_question(问题): # 使用用户输入作为问题提示 提示= f“回答以下问题:{问题}”

# Calculate the remaining tokens for output based on the model's 4096 token limit
prompt_tokens = len(prompt.split())  # Rough token count estimate
max_output_tokens = 4096 - prompt_tokens  # Tokens left for output

# Monitor memory usage before calling the model
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024 ** 2  # Memory in MB

# Get the output from the model with the calculated max tokens for output
output = llm(prompt=prompt, max_tokens=max_output_tokens, temperature=0.7, top_p=1.0)

# Monitor memory usage after calling the model
mem_after = process.memory_info().rss / 1024 ** 2  # Memory in MB

# Clean the output and return only the answer text
return output["choices"][0]["text"].strip()

用户交互的主循环

虽然正确: user_input = input("提出问题(或输入'exit'退出):")

if user_input.lower() == 'exit':
    print("Exiting the program.")
    break

# Get the model's response
answer = ask_question(user_input)

# Print only the answer
print(f"Answer: {answer}")

问题详情: 型号:Llama 2-7B(Q2_K版) 预期输出:我期待接近最大令牌限制(3000 或更多令牌)的响应。 实际输出:无论提示长度如何,输出上限为 511 个标记。 尝试过: 将 max_tokens 设置为 3000 或更高。 通过从模型的总令牌限制中减去提示长度来计算可用令牌。

我的期望: 我希望模型生成接近令牌限制的响应(理想情况下接近 3000 个令牌或更多,具体取决于输入),但它始终生成限制为 511 个令牌的输出。

model artificial-intelligence token limit llama
1个回答
0
投票

尝试在 Llama 构造函数中将 n_ctx 添加到 2048,所以:

Llama(n_ctx=2048, model_path=model_path)

此参数告诉模型提示和响应组合的最大长度是多少。

© www.soinside.com 2019 - 2024. All rights reserved.