llama.cpp python 和 ctransformer 的相同提示和参数的完成不一致

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

我一直在使用 langchain llm 链比较各种 langchain 兼容的 llama2 运行时。 具有以下参数覆盖:

# llama.cpp:
    model_path="../llama.cpp/models/generated/codellama-instruct-7b.ggufv3.Q5_K_M.bin",

    n_ctx = 2048,
    max_tokens = 2048,
    temperature = 0.85,
    top_k = 40,
    top_p = 0.95,
    repeat_penalty = 1.1,
    seed = 112358,

# ctransformer:
    model="../llama.cpp/models/generated/codellama-instruct-7b.ggufv3.Q5_K_M.bin",

    config={
        "context_length": 2048,
        "max_new_tokens": 2048,
        "temperature": 0.85,
        "top_k": 40,
        "top_p": 0.95,
        "repetition_penalty" :1.1,
        "seed" : 112358
    },

该模型源自原始 codellama-7b-instruct,使用 llama.cpp 建议的方法。

系统和用户提示相同。并且提示模板来自codellama论文。

template = """<s>[INST] <<SYS>>
{system}
<</SYS>>

{user} [/INST]"""

system = """You are very helpful coding assistant who can write complete and correct programs in various programming languages, expecially in java and scala."""

基于 ctransformer 的补全足够了,但 llama.cpp 的补全质量很差,通常不完整、重复,有时陷入重复循环。

除了覆盖之外,我已经验证了两种实现的默认值 AFAIK 是相同的。

我可以更多检查哪些方面,以使 llama.cpp 表现相同,因为我对使用 llama.cpp 更感兴趣。

langchain llama-cpp-python llamacpp ctransformers
1个回答
0
投票

修复两个框架中的种子理论上应该可行,但我注意到这个实验的另一个问题:这些

temperature
top_k
设置对于代码生成任务来说并不是真正有用,事实上,如此广泛的分布应该是即使期望产出最多样化和最具创造性的成果,也可能会避免。例如,在 OpenAI 论坛上,您可以找到建议,对于代码生成,
temperature
应设置为 0.2,
top_p
应设置为 0.1(请参阅这篇文章)。最高建议设置(对于创意写作)是
temperature
为 0.7,
top_p
为 0.8。看看进行这些更改是否会对您的 A/B 测试产生任何影响。

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