Download Run.py from Zhaoming213/ChatBox4-unrestricted: direct link, hf CLI and curl.
- Browser
- Download file 1.7 kB
-
https://huggingface.co/Zhaoming213/ChatBox4-unrestricted/resolve/main/Run.py
- Command line
-
hf download hf://Zhaoming213/ChatBox4-unrestricted/Run.py
-
curl -L -o Run.py https://huggingface.co/Zhaoming213/ChatBox4-unrestricted/resolve/main/Run.py
1.7 kB
| import os | |
| os.environ["HF_HUB_OFFLINE"] = "1" | |
| os.environ["TRANSFORMERS_OFFLINE"] = "1" | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from peft import PeftModel | |
| import torch | |
| # 1. 基础模型和分词器路径 | |
| base_model_name = "./model" | |
| lora_path = "./lora" | |
| # 【核心修改】自动检测设备:如果是 Apple Silicon 则使用 mps,否则用 cpu | |
| if torch.backends.mps.is_available(): | |
| device = torch.device("mps") | |
| print("已检测到 Apple Silicon,将使用 MPS 进行硬件加速 🚀") | |
| else: | |
| device = torch.device("cpu") | |
| print("未检测到 MPS,将使用 CPU") | |
| # 加载分词器 | |
| tokenizer = AutoTokenizer.from_pretrained(lora_path) | |
| # 加载原模型(在 Mac 上建议去掉 device_map="auto",直接用 .to(device) 更稳定) | |
| base_model = AutoModelForCausalLM.from_pretrained( | |
| base_model_name, | |
| torch_dtype=torch.float16 | |
| ).to(device) | |
| # 调整模型的 Token Embeddings 大小 | |
| base_model.resize_token_embeddings(len(tokenizer)) | |
| # 加载 LoRA 权重 | |
| model = PeftModel.from_pretrained(base_model, lora_path) | |
| # 测试对话 | |
| while True: | |
| prompt = input("> ") | |
| prompt = "Human: " + prompt + "\nBot:" | |
| if prompt == "exit": | |
| break | |
| # 【核心修改】将输入移动到 device(即 mps) | |
| inputs = tokenizer(prompt, return_tensors="pt").to(device) | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=100, | |
| temperature=0.7, | |
| top_p=0.9, | |
| do_sample=True, | |
| pad_token_id=tokenizer.eos_token_id, | |
| repetition_penalty=1.2, | |
| no_repeat_ngram_size=3 | |
| ) | |
| response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| print(response.replace(" ", "")) | |