{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceType":"competition","sourceId":121150,"databundleVersionId":15833391,"isSourceIdPinned":false},{"sourceType":"datasetVersion","sourceId":14340123,"datasetId":9155822,"databundleVersionId":15148283},{"sourceType":"datasetVersion","sourceId":15025941,"datasetId":9618470,"databundleVersionId":15903807},{"sourceType":"datasetVersion","sourceId":15026122,"datasetId":9618604,"databundleVersionId":15904003},{"sourceType":"modelInstanceVersion","sourceId":754941,"databundleVersionId":15740514,"modelInstanceId":573226,"modelId":585575,"isSourceIdPinned":false}],"dockerImageVersionId":31287,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport pandas as pd\nimport torch\nfrom torch.utils.data import DataLoader, Dataset\nfrom transformers import AutoTokenizer, AutoModelForSeq2SeqLM\nfrom tqdm.auto import tqdm","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:01:04.917146Z","iopub.execute_input":"2026-03-03T08:01:04.917505Z","iopub.status.idle":"2026-03-03T08:01:25.202772Z","shell.execute_reply.started":"2026-03-03T08:01:04.917473Z","shell.execute_reply":"2026-03-03T08:01:25.202185Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"MODEL_PATH=\"/kaggle/input/k/qifeihhh666/dpc-starter-train/byt5-akkadian-model\"\nMODEL_PATH=\"/kaggle/input/models/mattiaangeli/byt5-akkadian-mbr/pytorch/default/6\"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:01:25.204370Z","iopub.execute_input":"2026-03-03T08:01:25.204758Z","iopub.status.idle":"2026-03-03T08:01:25.208401Z","shell.execute_reply.started":"2026-03-03T08:01:25.204733Z","shell.execute_reply":"2026-03-03T08:01:25.207667Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"TEST_DATA_PATH = \"/kaggle/input/deep-past-initiative-machine-translation/test.csv\"\nTEST_DATA_PATH = \"/kaggle/input/datasets/lisakwon/test-csv/test.csv\"\n\nBATCH_SIZE = 16\nMAX_LENGTH = 512\nDEVICE = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n\n# --- Model Loading ---\nprint(f\"Loading model from {MODEL_PATH}...\")\ntokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, local_files_only=True)\nmodel = AutoModelForSeq2SeqLM.from_pretrained(MODEL_PATH, local_files_only=True).to(DEVICE)\nmodel.eval()\n\n# --- Data Preparation ---\ntest_df = pd.read_csv(TEST_DATA_PATH)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:16:35.248024Z","iopub.execute_input":"2026-03-03T08:16:35.248674Z","iopub.status.idle":"2026-03-03T08:16:36.734099Z","shell.execute_reply.started":"2026-03-03T08:16:35.248641Z","shell.execute_reply":"2026-03-03T08:16:36.733196Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"PREFIX = \"translate Akkadian to English: \"\n\nclass InferenceDataset(Dataset):\n    def __init__(self, df, tokenizer):\n        self.texts = df['transliteration'].astype(str).tolist()\n        self.texts = [PREFIX + i for i in self.texts]\n        self.tokenizer = tokenizer\n        \n    def __len__(self):\n        return len(self.texts)\n    \n    def __getitem__(self, idx):\n        text = self.texts[idx]\n        inputs = self.tokenizer(\n            text, \n            max_length=MAX_LENGTH, \n            padding=\"max_length\", \n            truncation=True, \n            return_tensors=\"pt\"\n        )\n        return {\n            \"input_ids\": inputs[\"input_ids\"].squeeze(0),\n            \"attention_mask\": inputs[\"attention_mask\"].squeeze(0)\n        }\n\ntest_dataset = InferenceDataset(test_df, tokenizer)\ntest_loader = DataLoader(test_dataset, batch_size=BATCH_SIZE, shuffle=False)\n\n# --- Inference Loop ---\nprint(\"Starting Inference...\")\nall_predictions = []","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:01:44.379088Z","iopub.execute_input":"2026-03-03T08:01:44.379615Z","iopub.status.idle":"2026-03-03T08:01:44.392045Z","shell.execute_reply.started":"2026-03-03T08:01:44.379587Z","shell.execute_reply":"2026-03-03T08:01:44.391375Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with torch.no_grad():\n    for batch in tqdm(test_loader):\n        input_ids = batch[\"input_ids\"].to(DEVICE)\n        attention_mask = batch[\"attention_mask\"].to(DEVICE)\n  \n        outputs = model.generate(\n            input_ids=input_ids,\n            attention_mask=attention_mask,\n            max_length=MAX_LENGTH,\n            num_beams=4,\n            early_stopping=True\n        )\n        \n        decoded = tokenizer.batch_decode(outputs, skip_special_tokens=True)\n        all_predictions.extend([d.strip() for d in decoded])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:01:44.395523Z","iopub.execute_input":"2026-03-03T08:01:44.395796Z","iopub.status.idle":"2026-03-03T08:01:50.113965Z","shell.execute_reply.started":"2026-03-03T08:01:44.395764Z","shell.execute_reply":"2026-03-03T08:01:50.113005Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# --- Submission ---\nsubmission_Deep = pd.DataFrame({\n    \"id\": test_df[\"id\"],\n    \"translation\": all_predictions\n})\n\nsubmission_Deep[\"translation\"] = submission_Deep[\"translation\"].apply(lambda x: x if len(x) > 0 else \"broken text\")\n\nsubmission_Deep.to_csv(\"submission.csv\", index=False)\nsubmission_Deep.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-03T08:01:54.780083Z","iopub.execute_input":"2026-03-03T08:01:54.780850Z","iopub.status.idle":"2026-03-03T08:01:54.809597Z","shell.execute_reply.started":"2026-03-03T08:01:54.780807Z","shell.execute_reply":"2026-03-03T08:01:54.808740Z"}},"outputs":[],"execution_count":null}]}