diff --git a/openseek/competition/LongContext-ICL-Annotation/src/main.py b/openseek/competition/LongContext-ICL-Annotation/src/main.py index c2949795..8fb31399 100644 --- a/openseek/competition/LongContext-ICL-Annotation/src/main.py +++ b/openseek/competition/LongContext-ICL-Annotation/src/main.py @@ -6,18 +6,18 @@ from method import build_prompt, select_examples -from method import annotate_nvidia as annotate # For Nvidia GPU -# from method import annotate_ascend as annotate # For Huawei Ascend +# from method import annotate_nvidia as annotate # For Nvidia GPU +from method import annotate_ascend as annotate # For Huawei Ascend TASK_FILES = { - 1: './data/openseek-1_closest_integers.json', - 2: './data/openseek-2_count_nouns_verbs.json', - 3: './data/openseek-3_collatz_conjecture.json', - 4: './data/openseek-4_conala_concat_strings.json', - 5: './data/openseek-5_semeval_2018_task1_tweet_sadness_detection.json', - 6: './data/openseek-6_mnli_same_genre_classification.json', - 7: './data/openseek-7_jeopardy_answer_generation_all.json', - 8: '../data/openseek-8_kernel_generation.json', + 1: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-1_closest_integers.json', + 2: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-2_count_nouns_verbs.json', + 3: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-3_collatz_conjecture.json', + 4: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-4_conala_concat_strings.json', + 5: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-5_semeval_2018_task1_tweet_sadness_detection.json', + 6: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-6_mnli_same_genre_classification.json', + 7: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-7_jeopardy_answer_generation_all.json', + 8: '/root/OpenSeek/openseek/competition/LongContext-ICL-Annotation/data/openseek-8_kernel_generation.json', } def parser_args(): @@ -30,7 +30,7 @@ def parser_args(): default='../outputs/', help='Prefix path to save the evaluation logs.') parser.add_argument('--tokenizer_path', type=str, - default='/share/project/wuhaiming/spaces/data_agent/OpenSeek-main/openseek/competition/LongContext-ICL-Annotation/src/Qwen3-4B') + default='/root/Qwen3-4B') args = parser.parse_args() return args @@ -48,16 +48,14 @@ def evaluate(task_id:int, task_name = task_dict['task_name'] task_description = task_dict['Definition'][0] - icl_examples = task_dict['examples'][:100] + icl_examples = task_dict['examples'][:50] test_samples = task_dict['test_samples'] - version = 1 - output_file = f'{log_path_prefix}openseek-{task_id}-v{version}.jsonl' + # The evaluation platform currently expects the submission filename to be + # exactly openseek-{task_id}-v1.jsonl. + output_file = f'{log_path_prefix}openseek-{task_id}-v1.jsonl' output_path = os.path.dirname(output_file) os.makedirs(output_path, exist_ok=True) - while os.path.exists(output_file): - version += 1 - output_file = f'{log_path_prefix}openseek-{task_id}-v{version}.jsonl' with open(output_file, 'w') as f: pass @@ -79,9 +77,9 @@ def evaluate(task_id:int, # if tokenized_input['input_ids'].shape[1] > max_input_length: # test_record['prediction'] = None # else: - # prediction = annotate(input_prompt) + # prediction = annotate(input_prompt, task_id) # test_record['prediction'] = prediction - prediction = annotate(input_prompt) + prediction = annotate(input_prompt, task_id) test_record['prediction'] = prediction with open(output_file, 'a') as f: f.write(json.dumps(test_record)+'\n') @@ -89,4 +87,4 @@ def evaluate(task_id:int, if __name__ == '__main__': args = parser_args() qwen_tokenizer = AutoTokenizer.from_pretrained(args.tokenizer_path) - evaluate(args.task_id, qwen_tokenizer, args.max_input_length, args.log_path_prefix) \ No newline at end of file + evaluate(args.task_id, qwen_tokenizer, args.max_input_length, args.log_path_prefix) diff --git a/openseek/competition/LongContext-ICL-Annotation/src/method.py b/openseek/competition/LongContext-ICL-Annotation/src/method.py index 386daf22..94a552f4 100644 --- a/openseek/competition/LongContext-ICL-Annotation/src/method.py +++ b/openseek/competition/LongContext-ICL-Annotation/src/method.py @@ -158,7 +158,7 @@ def select_examples(all_examples: list[dict], task_description: str, text2annota """ # 初始化Qwen3-4B的tokenizer(自动下载/加载千问3-4B的分词器) # 若本地已下载模型,可替换为本地路径,如 "./qwen3-4b" - tokenizer = AutoTokenizer.from_pretrained("/share/project/wuhaiming/spaces/data_agent/OpenSeek-main/openseek/competition/LongContext-ICL-Annotation/src/Qwen3-4B", trust_remote_code=True) + tokenizer = AutoTokenizer.from_pretrained("/root/Qwen3-4B", trust_remote_code=True) # 最大上下文长度限制(Qwen3-4B的上下文窗口默认是8k/32k,可根据实际调整) target_length = 8192 # 若需严格适配Qwen3-4B,建议改为8192(8k) @@ -217,8 +217,6 @@ def count_answer(text: str) -> tuple[list, dict]: max_count = max(content_counter.values()) answer = [content for content, count in content_counter.items() if count == max_count] - if (len(answer[0]) >= 100): - return None return answer[0] @@ -235,7 +233,7 @@ def annotate_nvidia(input_prompt:str)->list[str]: data = { "model": "../Qwen3-4B", "prompt": input_prompt, - "max_tokens": 10_000, # max_token = 10k + "max_tokens": 1024, # max_token = 10k } try: @@ -248,7 +246,7 @@ def annotate_nvidia(input_prompt:str)->list[str]: prediction = count_answer(whole_result) return prediction -def annotate_ascend(input_prompt:str)->list[str]: +def annotate_ascend(input_prompt:str, task_id:int=None)->list[str]: """ Annotate the unlabeled data using an LLM API (Huawei Ascend). prompts: @@ -258,7 +256,7 @@ def annotate_ascend(input_prompt:str)->list[str]: import openai openai.api_key = "EMPTY" openai.base_url = "http://localhost:9010/v1/" - model = "Qwen3-4B-ascend-flagos" + model = "/root/Qwen3-4B" messages = [ {"role": "system", "content": "You are a helpful assistant."}, @@ -269,9 +267,16 @@ def annotate_ascend(input_prompt:str)->list[str]: messages=messages, temperature=0.7, top_p=0.95, - max_tokens=10_000, + max_tokens=1024, stream=False, ) whole_result = response.choices[0].message.content + + # Special handling for Task 8 (code generation): return raw model output + # Task 8 generates Triton code without