您可以在有网络连接的环境中下载所需的 GPT-2 分词器文件,然后在您的运行环境中本地加载这些文件。您可以使用 Hugging Face 的 Transformers 库的
PreTrainedTokenizer
来下载并保存分词器,然后加载本地的文件。
在有网络连接的环境中,您可以使用以下 Python 代码下载并保存分词器:
from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
tokenizer.save_pretrained('./path_to_save_directory') # 指定一个保存分词器文件的目录
之后,您可以将上述代码所保存的分词器文件(包括 ‘tokenizer_config.json’, ‘special_tokens_map.json’, ‘vocab.json’, ‘merges.txt’)迁移到您的运行环境(例如通过 USB 或者其他物理介质)。
在您的运行环境中,您可以使用以下 Python 代码从本地加载 GPT-2 分词器:
from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained('./path_to_save_directory') # 使用保存分词器的目录来加载分词器
在这里,‘./path_to_save_directory’ 需要被替换为您保存分词器文件的具体路径。
如果您还有其他问题或者需要关于 transformer 分词器等其他资源的详细信息,欢迎继续提问。
本地模型加载:
model_path=“/home/chatglm2-6b-32k”
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().cuda()
model=model.eval()
自定义模型:
class ChatGLM(LLM):
max_token: int = 100000 #输入文本的额最大值
temperature: float = 0.2
top_p = 0.6
history = []
def __init__(self):
super().__init__()
@property
def _llm_type(self) -> str:
return "ChatGLM"
def _call(self, prompt: str, stop: Optional[List[str]] = None,) -> str:
# headers中添加上content-type这个参数,指定为json格式
headers = {'Content-Type': 'application/json'}
data=json.dumps({ 'prompt':prompt, 'temperature':self.temperature,'history':self.history,'max_length':self.max_token})
# print("ChatGLM prompt:",prompt)
# 调用api
response = requests.post("http://0.0.0.0:8000",headers=headers,data=data)
# print("ChatGLM resp:",response)
if response.status_code!=200:
return "查询结果错误"
resp = response.json()
if stop is not None:
response = enforce_stop_tokens(response, stop)
self.history = self.history+[[None, resp['response']]]
return resp['response']
但是使用mapreduce 的时候,会自动访问huggingface上gpt的tokenizer,这是不是说明本地的tokenizer和langchain未适配成功呢,如果是,应该怎么处理呢