WisdomShell / codeshell

A series of code large language models developed by PKU-KCL
http://se.pku.edu.cn/kcl
Other
1.62k stars 120 forks source link

回答的末尾出现大量重复字符,如”你好“,竖线”|“ #37

Open 931752763 opened 1 year ago

931752763 commented 1 year ago

我使用WisdomShell/CodeShell-7B-Chat这个模型,不论使用LangChain-Chatchat的webui,还是直接使用fastchat启动服务进行提问,都会出现以下情况: `Human: 用python写一段分布式锁 Assistant: 这里是一个简单的分布式锁的示例,使用Python中的threading模块实现:

import threading

class Lock:
    def __init__(self):
        self._lock = threading.Lock()

    def acquire(self):
        self._lock.acquire()

    def release(self):
        self._lock.release()

class DistributedLock:
    def __init__(self, lock_manager):
        self._lock_manager = lock_manager
        self._lock = Lock()
        self._lock_manager.register_lock(self)

    def acquire(self):
        self._lock.acquire()
        self._lock_manager.request_lock(self)

    def release(self):
        self._lock_manager.release_lock(self)
        self._lock.release()

LockManager类是一个简单的分布式锁管理器,它将锁存储在一个字典中,以实现锁的注册和请求:

class LockManager:
    def __init__(self):
        self._lock_dict = {}

    def register_lock(self, lock):
        self._lock_dict[lock] = False

    def request_lock(self, lock):
        self._lock_dict[lock] = True

    def release_lock(self, lock):
        self._lock_dict[lock] = False

DistributedLock类将锁与锁管理器连接起来,以便在需要获取锁时将锁请求给锁管理器:

lock_manager = LockManager()
lock = DistributedLock(lock_manager)
lock.acquire()

现在,您已经拥有了一个简单的分布式锁,它使用Python中的锁和线程模块实现了。您可以根据需要修改和扩展代码以满足您的需求。 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |`

结尾有很多竖线?有时候还会重复一些简单词语。 我的环境: 操作系统:Linux-4.15.0-213-generic-x86_64-with-glibc2.27. python版本:3.10.0 (default, Mar 3 2022, 09:58:08) [GCC 7.5.0] langchain版本:0.0.322. fastchat版本:0.2.29

ZZR0 commented 1 year ago

您好,非常感谢您对CodeShell项目的支持。由于微调数据格式的问题,当前的模型有可能生成不符合预期的截止符。不过,我们已经在新版的对话微调模型中解决了这个问题,并计划在近期进行更新。目前,您可以通过在推理阶段添加新的截止符(如|||)来缓解这一问题。