xingruyu's picture
Upload text-only Gemma-4-E4B-it without vision and audio
17de841 verified
Raw History Blame Contribute Delete
1.42 kB
"""Run the local text-only model: python inference.py '你好' --device cpu"""
import argparse
from pathlib import Path
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('prompt', nargs='?', default='请用一句话介绍你自己。')
parser.add_argument('--device', default='cuda' if torch.cuda.is_available() else 'cpu')
parser.add_argument('--max-new-tokens', type=int, default=128)
args = parser.parse_args()
torch.set_num_threads(8)
path = Path(__file__).resolve().parent
tokenizer = AutoTokenizer.from_pretrained(path, local_files_only=True)
model = AutoModelForCausalLM.from_pretrained(
path, trust_remote_code=True, local_files_only=True, dtype=torch.bfloat16,
).to(args.device).eval()
text = tokenizer.apply_chat_template(
[{'role': 'user', 'content': args.prompt}], tokenize=False,
add_generation_prompt=True, enable_thinking=False,
)
inputs = tokenizer(text, return_tensors='pt', add_special_tokens=False).to(args.device)
inputs.pop('token_type_ids', None)
with torch.inference_mode():
tokens = model.generate(**inputs, max_new_tokens=args.max_new_tokens, do_sample=False)
print(tokenizer.decode(tokens[0, inputs.input_ids.shape[1]:], skip_special_tokens=True))
if __name__ == '__main__':
main()