File size: 24,105 Bytes
b4ec773
1
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"mount_file_id":"12GgxlLzeKU8ur3RBFou3725TiWqNIu5t","authorship_tag":"ABX9TyOI2W/0hXXZ371SvFKil863"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":4,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"TGLkbIr6TCiD","executionInfo":{"status":"ok","timestamp":1753065902565,"user_tz":-420,"elapsed":31447,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"a7633214-9b3c-4b41-f316-fea8a98cf9c7"},"outputs":[{"output_type":"stream","name":"stdout","text":["Hello Li Lei!  \n","This is one of humanity’s oldest and most personal questions, so I’ll share a few perspectives and then invite you to decide which resonates with you.\n","\n","1. Biological lens  \n","   From an evolutionary standpoint, the “purpose” encoded in every living organism is simply to survive, reproduce, and pass on its genes. Life persists because it is good at persisting.\n","\n","2. Philosophical lens  \n","   Thinkers across cultures have argued that meaning is not handed to us by nature; we must create it ourselves. For Sartre, existence precedes essence—we are free to define our own essence through choices. For Confucian traditions, meaning arises from cultivating virtue (仁, rén) and harmonious relationships within family and society.\n","\n","3. Psychological lens  \n","   Research in positive psychology suggests that people feel life is meaningful when they experience three things:  \n","   - Purpose: having goals that feel worthwhile.  \n","   - Coherence: understanding how life fits together.  \n","   - Significance: feeling that one’s existence matters to others.\n","\n","4. Personal lens (a suggestion)  \n","   Instead of hunting for a single cosmic answer, try treating meaning as an ongoing craft project. Ask:  \n","   - What relationships do I want to deepen?  \n","   - What skills or values do I want to cultivate?  \n","   - What small acts today could make someone else’s life better?\n","\n","If you experiment with those questions regularly, you may discover that meaning is less a hidden treasure and more a garden you keep tending.\n","\n","What kind of activities or relationships make you feel most alive, Li Lei?\n"]}],"source":["from openai import OpenAI\n","from google.colab import userdata\n","\n","\n","client = OpenAI(\n","    api_key=userdata.get('MOONSHOT_API_KEY'), # Replace MOONSHOT_API_KEY with the API Key you obtained from the Kimi Open Platform\n","    base_url=\"https://api.moonshot.ai/v1\",\n",")\n","\n","completion = client.chat.completions.create(\n","    # model = \"moonshot-v1-8k\",\n","    model = \"kimi-k2-0711-preview\",\n","    messages = [\n","        {\"role\": \"system\", \"content\": \"You are Kimi, an AI assistant provided by Moonshot AI. You are proficient in Vietnamese and English conversations. You provide users with safe, helpful, and accurate answers. You will reject any requests involving terrorism, racism, or explicit content. Moonshot AI is a proper noun and should not be translated.\"},\n","        {\"role\": \"user\", \"content\": \"Hello, my name is Li Lei. What is the meaning of life?\"}\n","    ],\n","    temperature = 0.3,\n",")\n","\n","# We receive a response from the Kimi large language model via the API (role=assistant)\n","print(completion.choices[0].message.content)"]},{"cell_type":"code","source":["%%writefile vmlu_kimi.py\n","import os\n","import json\n","import tqdm\n","import pandas as pd\n","import time\n","import re\n","from openai import OpenAI\n","import random\n","from typing import Optional, Dict, Any\n","from google.colab import userdata\n","\n","class KimiClient:\n","    def __init__(self, api_key: str, base_url: str = \"https://api.moonshot.ai/v1\"):\n","        self.client = OpenAI(\n","            api_key=api_key,\n","            base_url=base_url,\n","        )\n","        self.model = \"kimi-k2-0711-preview\"\n","\n","    def chat_completion_with_retry(\n","        self,\n","        messages: list,\n","        temperature: float = 0,\n","        max_retries: int = 5,\n","        base_delay: float = 1.0\n","    ) -> Optional[str]:\n","        \"\"\"\n","        Chat completion with exponential backoff retry for rate limits\n","        \"\"\"\n","        for attempt in range(max_retries):\n","            try:\n","                response = self.client.chat.completions.create(\n","                    model=self.model,\n","                    messages=messages,\n","                    temperature=temperature,\n","                )\n","                return response.choices[0].message.content\n","\n","            except Exception as e:\n","                error_str = str(e).lower()\n","\n","                # Rate limit handling\n","                if \"rate_limit\" in error_str or \"rate limit\" in error_str:\n","                    # Extract wait time from error message if available\n","                    wait_time = self._extract_wait_time(str(e))\n","                    if wait_time:\n","                        print(f\"Rate limit hit. Waiting {wait_time}s (from error message)\")\n","                        time.sleep(wait_time)\n","                    else:\n","                        # Exponential backoff with jitter\n","                        delay = base_delay * (2 ** attempt) + random.uniform(0, 1)\n","                        print(f\"Rate limit hit. Retry {attempt + 1}/{max_retries}. Waiting {delay:.2f}s\")\n","                        time.sleep(delay)\n","                    continue\n","\n","                # Other API errors\n","                elif \"timeout\" in error_str or \"connection\" in error_str:\n","                    delay = base_delay * (2 ** attempt)\n","                    print(f\"Connection issue. Retry {attempt + 1}/{max_retries}. Waiting {delay:.2f}s\")\n","                    time.sleep(delay)\n","                    continue\n","\n","                # Unknown errors\n","                else:\n","                    print(f\"Unexpected error: {e}\")\n","                    if attempt < max_retries - 1:\n","                        delay = base_delay * (2 ** attempt)\n","                        print(f\"Retry {attempt + 1}/{max_retries}. Waiting {delay:.2f}s\")\n","                        time.sleep(delay)\n","                        continue\n","                    else:\n","                        print(f\"Max retries reached for unknown error\")\n","                        return None\n","\n","        print(f\"Failed after {max_retries} attempts\")\n","        return None\n","\n","    def _extract_wait_time(self, error_message: str) -> Optional[float]:\n","        \"\"\"Extract wait time from rate limit error message\"\"\"\n","        # Common patterns for rate limit messages\n","        patterns = [\n","            r'try again in (\\d+\\.?\\d*) seconds',\n","            r'retry after (\\d+\\.?\\d*) seconds',\n","            r'wait (\\d+\\.?\\d*) seconds'\n","        ]\n","\n","        for pattern in patterns:\n","            match = re.search(pattern, error_message.lower())\n","            if match:\n","                return float(match.group(1))\n","        return None\n","\n","def process_vmlu_with_kimi(api_key: str, data_path: str = 'test.jsonl'):\n","    \"\"\"Process VMLU dataset with Kimi K2 model\"\"\"\n","\n","    # Initialize Kimi client\n","    kimi = KimiClient(api_key)\n","\n","    # Load data\n","    data = []\n","    with open(data_path, 'r', encoding='utf-8') as f:\n","        lines = f.readlines()\n","        for line in lines:\n","            data.append(json.loads(line))\n","\n","    print(f\"Loaded {len(data)} questions\")\n","\n","    # Process questions\n","    all_res = []\n","    failed_ids = []\n","\n","    for idx, doc in enumerate(tqdm.tqdm(data)):\n","        text_choice = '\\n'.join(doc['choices'])\n","        prompt = (\"Chỉ đưa ra chữ cái đứng trước câu trả lời đúng (A, B, C, D hoặc E) \"\n","                 \"của câu hỏi trắc nghiệm sau: \\n\"\n","                 + doc[\"question\"] + \"\\n\\n\" + text_choice + \"\\n\" + \"Đáp án: \")\n","\n","        messages = [\n","            {\n","                \"role\": \"system\",\n","                \"content\": \"You are Kimi, an AI assistant. Provide only the letter (A, B, C, D, or E) that corresponds to the correct answer for Vietnamese multiple choice questions.\"\n","            },\n","            {\n","                \"role\": \"user\",\n","                \"content\": prompt\n","            }\n","        ]\n","\n","        # Get response with retry logic\n","        response_str = kimi.chat_completion_with_retry(messages, temperature=0)\n","\n","        if response_str is None:\n","            print(f\"Failed to get response for question {doc['id']}\")\n","            failed_ids.append(doc['id'])\n","            response_str = \"\"\n","\n","        all_res.append({\n","            \"id\": doc['id'],\n","            \"prompt\": prompt,\n","            \"question\": doc[\"question\"],\n","            \"answer\": response_str\n","        })\n","\n","        # Save progress every 100 questions\n","        if idx % 100 == 0 and idx > 0:\n","            result_folder = \"all_res/kimi_result\"\n","            os.makedirs(result_folder, exist_ok=True)\n","            pd.DataFrame(all_res).to_csv(\n","                f\"{result_folder}/raw_result_{len(all_res)}.csv\",\n","                index=False,\n","                encoding='utf-8'\n","            )\n","            print(f\"Progress saved: {len(all_res)} questions processed\")\n","\n","        # Rate limiting: small delay between requests\n","        time.sleep(0.1)\n","\n","    # Final processing\n","    df = pd.DataFrame(all_res)\n","\n","    # Clean answers - extract first letter and ensure it's A-E\n","    def clean_answer(answer_str):\n","        if not answer_str:\n","            return \"\"\n","\n","        # Extract first character that's A-E\n","        cleaned = re.sub(r'[^ABCDEabcde]', '', str(answer_str))\n","        if cleaned:\n","            return cleaned[0].upper()\n","\n","        # Fallback: try to find A-E in the original string\n","        for char in str(answer_str).upper():\n","            if char in 'ABCDE':\n","                return char\n","\n","        return \"\"\n","\n","    df['answer'] = df['answer'].apply(clean_answer)\n","\n","    # Save final results\n","    result_folder = \"all_res/kimi_result\"\n","    os.makedirs(result_folder, exist_ok=True)\n","\n","    # Save raw results\n","    df.to_csv(f\"{result_folder}/final_raw_result.csv\", index=False, encoding='utf-8')\n","\n","    # Create submission file\n","    submission_df = df[['id', 'answer']].copy()\n","    submission_df.to_csv('kimi_submission_k2.csv', index=False)\n","\n","    # Print statistics\n","    total_questions = len(data)\n","    answered_questions = len(df[df['answer'] != ''])\n","    valid_answers = len(df[df['answer'].isin(['A', 'B', 'C', 'D', 'E'])])\n","\n","    print(f\"\\n=== Results Summary ===\")\n","    print(f\"Total questions: {total_questions}\")\n","    print(f\"Answered questions: {answered_questions}\")\n","    print(f\"Valid answers (A-E): {valid_answers}\")\n","    print(f\"Success rate: {valid_answers/total_questions*100:.2f}%\")\n","\n","    if failed_ids:\n","        print(f\"Failed question IDs: {failed_ids[:10]}{'...' if len(failed_ids) > 10 else ''}\")\n","\n","    return df\n","\n","if __name__ == \"__main__\":\n","    # Get API key from environment\n","    api_key = \"sk-VZFI2IgonKwgzpKsASVeUDoEUfq0FUwUKDNNjk0JWoF0SOiQ\"\n","    # api_key = userdata.get('MOONSHOT_API_KEY')\n","    if not api_key:\n","        raise ValueError(\"Please set MOONSHOT_API_KEY environment variable\")\n","\n","    # Process VMLU dataset\n","    results_df = process_vmlu_with_kimi(api_key)\n","    print(\"VMLU processing completed!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Pe9UAV6nTc_D","executionInfo":{"status":"ok","timestamp":1753065906779,"user_tz":-420,"elapsed":15,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"a6c28d6b-1fce-4e05-893c-deae16d6d2bd"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["Writing vmlu_kimi.py\n"]}]},{"cell_type":"code","source":["!cp /content/drive/MyDrive/2025/llm/vlmu_mqa_v1.5.zip ./"],"metadata":{"id":"RxCZRMLRV445","executionInfo":{"status":"ok","timestamp":1753065909241,"user_tz":-420,"elapsed":412,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["!unzip -q vlmu_mqa_v1.5.zip"],"metadata":{"id":"XYeg5CVLWHZB","executionInfo":{"status":"ok","timestamp":1753065909424,"user_tz":-420,"elapsed":105,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["!python vmlu_kimi.py"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4_0fCASbWJC_","executionInfo":{"status":"ok","timestamp":1753078194019,"user_tz":-420,"elapsed":4471511,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"59500cf8-49fc-4782-9f7a-1838c8824693"},"execution_count":8,"outputs":[{"output_type":"stream","name":"stdout","text":["Loaded 9833 questions\n","  1% 100/9833 [02:33<3:09:40,  1.17s/it]Progress saved: 101 questions processed\n","  2% 200/9833 [04:54<3:19:56,  1.25s/it]Progress saved: 201 questions processed\n","  3% 300/9833 [07:05<3:20:14,  1.26s/it]Progress saved: 301 questions processed\n","  4% 400/9833 [09:30<3:09:14,  1.20s/it]Progress saved: 401 questions processed\n","  5% 500/9833 [11:51<5:04:13,  1.96s/it]Progress saved: 501 questions processed\n","  6% 600/9833 [14:26<4:43:51,  1.84s/it]Progress saved: 601 questions processed\n","  7% 700/9833 [16:43<3:31:54,  1.39s/it]Progress saved: 701 questions processed\n","  8% 800/9833 [19:05<3:00:43,  1.20s/it]Progress saved: 801 questions processed\n","  9% 900/9833 [21:08<2:56:15,  1.18s/it]Progress saved: 901 questions processed\n"," 10% 1000/9833 [23:19<2:57:40,  1.21s/it]Progress saved: 1001 questions processed\n"," 11% 1100/9833 [25:47<3:11:10,  1.31s/it]Progress saved: 1101 questions processed\n"," 12% 1200/9833 [27:54<3:46:54,  1.58s/it]Progress saved: 1201 questions processed\n"," 13% 1300/9833 [29:58<2:52:19,  1.21s/it]Progress saved: 1301 questions processed\n"," 14% 1400/9833 [32:05<2:57:24,  1.26s/it]Progress saved: 1401 questions processed\n"," 15% 1500/9833 [34:21<2:51:51,  1.24s/it]Progress saved: 1501 questions processed\n"," 16% 1600/9833 [36:37<4:23:43,  1.92s/it]Progress saved: 1601 questions processed\n"," 17% 1700/9833 [39:06<3:17:19,  1.46s/it]Progress saved: 1701 questions processed\n"," 18% 1800/9833 [41:14<2:46:59,  1.25s/it]Progress saved: 1801 questions processed\n"," 19% 1900/9833 [43:35<2:39:28,  1.21s/it]Progress saved: 1901 questions processed\n"," 20% 2000/9833 [45:45<2:44:22,  1.26s/it]Progress saved: 2001 questions processed\n"," 21% 2100/9833 [48:08<2:51:33,  1.33s/it]Progress saved: 2101 questions processed\n"," 22% 2200/9833 [50:30<2:49:13,  1.33s/it]Progress saved: 2201 questions processed\n"," 23% 2300/9833 [52:50<3:07:03,  1.49s/it]Progress saved: 2301 questions processed\n"," 24% 2400/9833 [55:12<2:34:53,  1.25s/it]Progress saved: 2401 questions processed\n"," 25% 2500/9833 [57:32<3:00:22,  1.48s/it]Progress saved: 2501 questions processed\n"," 26% 2600/9833 [59:48<3:27:09,  1.72s/it]Progress saved: 2601 questions processed\n"," 27% 2700/9833 [1:01:59<2:45:05,  1.39s/it]Progress saved: 2701 questions processed\n"," 28% 2800/9833 [1:04:09<2:48:18,  1.44s/it]Progress saved: 2801 questions processed\n"," 29% 2900/9833 [1:06:23<2:31:44,  1.31s/it]Progress saved: 2901 questions processed\n"," 31% 3000/9833 [1:08:34<2:25:09,  1.27s/it]Progress saved: 3001 questions processed\n"," 32% 3100/9833 [1:10:44<2:32:37,  1.36s/it]Progress saved: 3101 questions processed\n"," 33% 3200/9833 [1:12:53<2:41:59,  1.47s/it]Progress saved: 3201 questions processed\n"," 34% 3300/9833 [1:15:01<2:10:51,  1.20s/it]Progress saved: 3301 questions processed\n"," 35% 3400/9833 [1:17:09<2:08:32,  1.20s/it]Progress saved: 3401 questions processed\n"," 36% 3500/9833 [1:19:15<2:17:38,  1.30s/it]Progress saved: 3501 questions processed\n"," 37% 3600/9833 [1:21:22<2:01:05,  1.17s/it]Progress saved: 3601 questions processed\n"," 38% 3700/9833 [1:23:22<1:56:58,  1.14s/it]Progress saved: 3701 questions processed\n"," 39% 3800/9833 [1:25:21<2:04:11,  1.24s/it]Progress saved: 3801 questions processed\n"," 40% 3900/9833 [1:27:24<2:01:42,  1.23s/it]Progress saved: 3901 questions processed\n"," 41% 4000/9833 [1:29:27<2:01:59,  1.25s/it]Progress saved: 4001 questions processed\n"," 42% 4100/9833 [1:31:34<1:52:50,  1.18s/it]Progress saved: 4101 questions processed\n"," 43% 4200/9833 [1:33:33<1:53:58,  1.21s/it]Progress saved: 4201 questions processed\n"," 44% 4300/9833 [1:35:33<1:46:58,  1.16s/it]Progress saved: 4301 questions processed\n"," 45% 4400/9833 [1:37:31<1:49:11,  1.21s/it]Progress saved: 4401 questions processed\n"," 46% 4500/9833 [1:39:28<1:41:19,  1.14s/it]Progress saved: 4501 questions processed\n"," 47% 4600/9833 [1:41:26<1:44:24,  1.20s/it]Progress saved: 4601 questions processed\n"," 48% 4700/9833 [1:43:23<1:47:47,  1.26s/it]Progress saved: 4701 questions processed\n"," 49% 4800/9833 [1:45:22<1:35:46,  1.14s/it]Progress saved: 4801 questions processed\n"," 50% 4900/9833 [1:47:22<1:47:53,  1.31s/it]Progress saved: 4901 questions processed\n"," 51% 5000/9833 [1:49:23<1:36:55,  1.20s/it]Progress saved: 5001 questions processed\n"," 52% 5100/9833 [1:51:23<1:37:03,  1.23s/it]Progress saved: 5101 questions processed\n"," 53% 5200/9833 [1:53:19<1:34:56,  1.23s/it]Progress saved: 5201 questions processed\n"," 54% 5300/9833 [1:55:15<1:26:26,  1.14s/it]Progress saved: 5301 questions processed\n"," 55% 5400/9833 [1:57:09<1:21:15,  1.10s/it]Progress saved: 5401 questions processed\n"," 56% 5500/9833 [1:59:04<1:19:48,  1.11s/it]Progress saved: 5501 questions processed\n"," 57% 5600/9833 [2:00:57<1:19:08,  1.12s/it]Progress saved: 5601 questions processed\n"," 58% 5700/9833 [2:02:50<1:14:58,  1.09s/it]Progress saved: 5701 questions processed\n"," 59% 5800/9833 [2:04:41<1:12:58,  1.09s/it]Progress saved: 5801 questions processed\n"," 60% 5900/9833 [2:06:30<1:08:50,  1.05s/it]Progress saved: 5901 questions processed\n"," 61% 6000/9833 [2:08:21<1:09:27,  1.09s/it]Progress saved: 6001 questions processed\n"," 62% 6100/9833 [2:10:14<1:08:45,  1.11s/it]Progress saved: 6101 questions processed\n"," 63% 6200/9833 [2:12:04<1:04:11,  1.06s/it]Progress saved: 6201 questions processed\n"," 64% 6300/9833 [2:13:56<1:07:21,  1.14s/it]Progress saved: 6301 questions processed\n"," 65% 6400/9833 [2:15:54<1:06:56,  1.17s/it]Progress saved: 6401 questions processed\n"," 66% 6500/9833 [2:17:50<1:06:23,  1.20s/it]Progress saved: 6501 questions processed\n"," 67% 6600/9833 [2:19:44<1:01:03,  1.13s/it]Progress saved: 6601 questions processed\n"," 68% 6700/9833 [2:21:38<1:01:32,  1.18s/it]Progress saved: 6701 questions processed\n"," 69% 6800/9833 [2:23:38<1:01:37,  1.22s/it]Progress saved: 6801 questions processed\n"," 70% 6900/9833 [2:25:37<57:01,  1.17s/it]Progress saved: 6901 questions processed\n"," 71% 7000/9833 [2:27:34<56:24,  1.19s/it]Progress saved: 7001 questions processed\n"," 72% 7100/9833 [2:29:33<51:23,  1.13s/it]Progress saved: 7101 questions processed\n"," 73% 7200/9833 [2:31:29<49:43,  1.13s/it]Progress saved: 7201 questions processed\n"," 74% 7300/9833 [2:33:23<47:21,  1.12s/it]Progress saved: 7301 questions processed\n"," 75% 7400/9833 [2:35:19<48:48,  1.20s/it]Progress saved: 7401 questions processed\n"," 76% 7500/9833 [2:37:12<44:00,  1.13s/it]Progress saved: 7501 questions processed\n"," 77% 7600/9833 [2:39:07<45:15,  1.22s/it]Progress saved: 7601 questions processed\n"," 78% 7700/9833 [2:41:08<43:07,  1.21s/it]Progress saved: 7701 questions processed\n"," 79% 7800/9833 [2:43:15<44:07,  1.30s/it]Progress saved: 7801 questions processed\n"," 80% 7900/9833 [2:45:16<39:18,  1.22s/it]Progress saved: 7901 questions processed\n"," 81% 8000/9833 [2:47:20<37:48,  1.24s/it]Progress saved: 8001 questions processed\n"," 82% 8100/9833 [2:49:22<34:03,  1.18s/it]Progress saved: 8101 questions processed\n"," 83% 8200/9833 [2:51:22<32:22,  1.19s/it]Progress saved: 8201 questions processed\n"," 84% 8300/9833 [2:53:22<30:42,  1.20s/it]Progress saved: 8301 questions processed\n"," 85% 8400/9833 [2:55:23<27:57,  1.17s/it]Progress saved: 8401 questions processed\n"," 86% 8500/9833 [2:57:23<26:21,  1.19s/it]Progress saved: 8501 questions processed\n"," 87% 8600/9833 [2:59:23<24:04,  1.17s/it]Progress saved: 8601 questions processed\n"," 88% 8700/9833 [3:01:24<23:50,  1.26s/it]Progress saved: 8701 questions processed\n"," 89% 8800/9833 [3:03:25<20:10,  1.17s/it]Progress saved: 8801 questions processed\n"," 91% 8900/9833 [3:05:26<18:41,  1.20s/it]Progress saved: 8901 questions processed\n"," 92% 9000/9833 [3:07:24<15:50,  1.14s/it]Progress saved: 9001 questions processed\n"," 93% 9100/9833 [3:09:28<17:15,  1.41s/it]Progress saved: 9101 questions processed\n"," 94% 9200/9833 [3:11:29<12:07,  1.15s/it]Progress saved: 9201 questions processed\n"," 95% 9300/9833 [3:13:34<10:55,  1.23s/it]Progress saved: 9301 questions processed\n"," 96% 9400/9833 [3:15:37<08:47,  1.22s/it]Progress saved: 9401 questions processed\n"," 97% 9500/9833 [3:17:41<06:48,  1.23s/it]Progress saved: 9501 questions processed\n"," 98% 9600/9833 [3:19:45<04:35,  1.18s/it]Progress saved: 9601 questions processed\n"," 99% 9700/9833 [3:21:50<02:33,  1.15s/it]Progress saved: 9701 questions processed\n","100% 9800/9833 [3:23:57<00:44,  1.36s/it]Progress saved: 9801 questions processed\n","100% 9833/9833 [3:24:38<00:00,  1.25s/it]\n","\n","=== Results Summary ===\n","Total questions: 9833\n","Answered questions: 9833\n","Valid answers (A-E): 9833\n","Success rate: 100.00%\n","VMLU processing completed!\n"]}]},{"cell_type":"code","source":["!wc -l kimi_submission_k2.csv"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_RW1kt79WZoR","executionInfo":{"status":"ok","timestamp":1753081803528,"user_tz":-420,"elapsed":112,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"e5b1f5c2-a85d-4354-d76f-f56a489ee89b"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["9834 kimi_submission_k2.csv\n"]}]},{"cell_type":"code","source":["!head -n 5 kimi_submission_k2.csv"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"GxeVS4nwPsOt","executionInfo":{"status":"ok","timestamp":1753081813594,"user_tz":-420,"elapsed":41,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"8735d02a-6b94-4921-a21c-e1b5828db59d"},"execution_count":10,"outputs":[{"output_type":"stream","name":"stdout","text":["id,answer\n","28-0021,B\n","28-0022,A\n","28-0023,D\n","28-0024,A\n"]}]},{"cell_type":"code","source":["!cp kimi_submission_k2.csv /content/drive/MyDrive/2025/llm/kimi_submission_k2.csv"],"metadata":{"id":"ThwlRT9hx7Ed","executionInfo":{"status":"ok","timestamp":1753081816784,"user_tz":-420,"elapsed":113,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}}},"execution_count":11,"outputs":[]},{"cell_type":"code","source":["!wc -l /content/drive/MyDrive/2025/llm/kimi_submission_k2.csv"],"metadata":{"id":"BDoLAt0sFBnc","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1753081818107,"user_tz":-420,"elapsed":106,"user":{"displayName":"Laam Pham","userId":"04566654796696849937"}},"outputId":"16d8b577-7183-4fa0-ed4f-9a134f96f52a"},"execution_count":12,"outputs":[{"output_type":"stream","name":"stdout","text":["9834 /content/drive/MyDrive/2025/llm/kimi_submission_k2.csv\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"ZP_UuVVj3Vi5"},"execution_count":null,"outputs":[]}]}