Saya mendapatkan "RuntimeError: Input, output, dan indeks harus ada di perangkat saat ini." ketika saya menjalankan baris ini. fill_mask("Mobil Otomatis .")

Saya menjalankannya di Colab. Kode saya:

from transformers import BertTokenizer, BertForMaskedLM
from pathlib import Path
from tokenizers import ByteLevelBPETokenizer
from transformers import BertTokenizer, BertForMaskedLM


paths = [str(x) for x in Path(".").glob("**/*.txt")]
print(paths)

bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

from transformers import BertModel, BertConfig

configuration = BertConfig()
model = BertModel(configuration)
configuration = model.config
print(configuration)

model = BertForMaskedLM.from_pretrained("bert-base-uncased")

from transformers import LineByLineTextDataset
dataset = LineByLineTextDataset(
    tokenizer=bert_tokenizer,
    file_path="./kant.txt",
    block_size=128,
)

from transformers import DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(
    tokenizer=bert_tokenizer, mlm=True, mlm_probability=0.15
)

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./KantaiBERT",
    overwrite_output_dir=True,
    num_train_epochs=1,
    per_device_train_batch_size=64,
    save_steps=10_000,
    save_total_limit=2,
    )

trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

trainer.train()

from transformers import pipeline

fill_mask = pipeline(
    "fill-mask",
    model=model,
    tokenizer=bert_tokenizer
)

fill_mask("Auto Car <mask>.")

Baris terakhir memberi saya kesalahan yang disebutkan di atas. Tolong beri tahu saya apa yang saya lakukan salah atau apa yang harus saya lakukan untuk menghapus kesalahan ini.

0
Naqi 12 Mei 2021, 05:36

1 menjawab

Jawaban Terbaik

Pelatih melatih model Anda secara otomatis di GPU (nilai default no_cuda=False). Anda dapat memverifikasi ini dengan menjalankan:

model.device

Setelah latihan. Pipa tidak melakukan ini dan ini mengarah ke kesalahan yang Anda lihat (yaitu model Anda ada di GPU Anda tetapi contoh kalimat Anda ada di CPU Anda). Anda dapat memperbaikinya dengan menjalankan pipeline dengan dukungan GPU juga:

fill_mask = pipeline(
    "fill-mask",
    model=model,
    tokenizer=bert_tokenizer,
    device=0,
)

Atau dengan mentransfer model Anda ke CPU sebelum menginisialisasi pipeline:

model.to('cpu')
1
cronoik 12 Mei 2021, 19:58