Instructions to use patrickvonplaten/opt_metaseq_6700m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use patrickvonplaten/opt_metaseq_6700m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="patrickvonplaten/opt_metaseq_6700m")# Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("patrickvonplaten/opt_metaseq_6700m") model = AutoModel.from_pretrained("patrickvonplaten/opt_metaseq_6700m", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| #!/usr/bin/env python3 | |
| import os | |
| from transformers import AutoTokenizer, GPT2Tokenizer | |
| #from megatron.initialize import initialize_megatron | |
| from metaseq import checkpoint_utils | |
| from transformers import OPTForCausalLM | |
| import torch | |
| path = "./model" | |
| hf_path = "/home/patrick/facebook/opt-6.7b" | |
| vocab_file = os.path.join(path, "gpt2-vocab.json") | |
| merges_file = os.path.join(path, "gpt2-merges.txt") | |
| tokenizer = GPT2Tokenizer(vocab_file, merges_file) | |
| tokenizer.save_pretrained(path) | |
| checkpoint = checkpoint_utils.load_model_ensemble_and_task( | |
| [os.path.join(path, "restored.pt")], | |
| arg_overrides={ | |
| "vocab_filename": vocab_file, | |
| "merges_filename": merges_file, | |
| } | |
| ) | |
| model = checkpoint[0][0].eval() | |
| model = model | |
| hf_model = OPTForCausalLM.from_pretrained(hf_path) | |
| # forward passes | |
| def single_batch_forward_logits(prompts): | |
| input_ids = tokenizer(prompts, return_tensors="pt").input_ids | |
| input_ids = torch.cat([torch.tensor([[0]]), input_ids], dim=-1) | |
| input_ids = input_ids | |
| with torch.no_grad(): | |
| logits = model(input_ids)[0] | |
| return logits | |
| # forward hf | |
| def forward_hf(prompts): | |
| input_ids = tokenizer(prompts, return_tensors="pt").input_ids | |
| input_ids = torch.cat([torch.tensor([[0]]), input_ids], dim=-1) | |
| input_ids = input_ids | |
| with torch.no_grad(): | |
| logits = hf_model(input_ids)[0] | |
| return logits | |
| prompts = [ | |
| "Today is a beautiful day and I want to", | |
| "In the city of", | |
| "Paris is the capital of France and", | |
| "Computers and mobile phones have taken", | |
| ] | |
| print("Next word generation") | |
| for prompt in prompts: | |
| print("-------------") | |
| print(f"Prompt: {prompt}...\n") | |
| logits_fsq = single_batch_forward_logits(prompt) | |
| pred_next_token = torch.argmax(logits_fsq[0, -1], -1) | |
| next_token = tokenizer.convert_ids_to_tokens([pred_next_token]) | |
| next_token = next_token[0].replace("Ġ", "") | |
| print(f"Next word: {next_token}") | |
| print("-------------") | |
| logits = forward_hf(prompt) | |
| pred_next_token = torch.argmax(logits[0, -1], -1) | |
| next_token = tokenizer.convert_ids_to_tokens([pred_next_token]) | |
| next_token = next_token[0].replace("Ġ", "") | |
| print(f"Next word: {next_token}") | |
| print("-------------") | |
| print("Is equal:", torch.allclose(logits_fsq.cpu(), logits.cpu(), atol=1e-3)) | |