diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260529_194707-o3l1vpla/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/config.yaml b/reward/wandb/run-20260529_194707-o3l1vpla/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9d28cc72985047d42673a4e14fa8373818aec42 --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/config.yaml @@ -0,0 +1,273 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 9pqfh5lrgyl0srsilyb4o7f1khpc7ymu: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=o3l1vpla + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=1 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "623847804928" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T11:47:07.400494Z" + writerId: 9pqfh5lrgyl0srsilyb4o7f1khpc7ymu + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 13 + - 14 + - 16 + - 61 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 1 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: o3l1vpla diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/output.log b/reward/wandb/run-20260529_194707-o3l1vpla/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..dc7a10bb3603646fbf8121c622280e801c52ff8c --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 1 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4824 avg length: 126.07 diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/requirements.txt b/reward/wandb/run-20260529_194707-o3l1vpla/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-metadata.json b/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4a0d71e7b2df8e1211ade8f20983c6c77c321e73 --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T11:47:07.400494Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=o3l1vpla", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=1" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "623847804928" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "9pqfh5lrgyl0srsilyb4o7f1khpc7ymu" +} \ No newline at end of file diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-summary.json b/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..cdbfd43f5196975c1a192b9dd6172404993ec9c2 --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/unbiased_bonus":0.07499999999999998,"_wandb":{"runtime":0},"reward/acc":0.482421875,"reward/t_grpo_bonus":0.2765625000000003,"reward/train_step":1,"_timestamp":1.7800552284795003e+09,"_runtime":0.276835887,"_step":1,"reward/avg_response_length":126.07421875} \ No newline at end of file diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-core.log b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..298439b5a07e02e7709c66273d7ed6415d5f703c --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-29T19:47:07.473481181+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpbw7abz65/port-1212640.txt","pid":1212640,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-29T19:47:07.474437183+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1212640-1212740-3778981817/socket","Net":"unix"}} +{"time":"2026-05-29T19:47:07.474559698+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1212640} +{"time":"2026-05-29T19:47:07.655012851+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-29T19:47:07.664220576+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"o3l1vpla","id":"1(@)"} +{"time":"2026-05-29T19:47:07.947077344+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"o3l1vpla","id":"1(@)"} +{"time":"2026-05-29T19:47:08.483101048+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"lu9yljxzchbl"} +{"time":"2026-05-29T19:47:08.683766011+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"lu9yljxzchbl"} +{"time":"2026-05-29T19:47:08.685066243+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"o3l1vpla","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685504424+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"o3l1vpla","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685645737+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685676362+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685684169+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-29T19:47:08.685710476+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685743906+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1212640-1212740-3778981817/socket","Net":"unix"}} +{"time":"2026-05-29T19:47:08.685770189+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-29T19:47:08.68577738+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-29T19:47:08.685784402+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-internal.log b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..e6aa95bc911f305bf56e76e7f267dc50276b1000 --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-internal.log @@ -0,0 +1,27 @@ +{"time":"2026-05-29T19:47:07.664329293+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-29T19:47:07.946806555+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-29T19:47:07.946916582+08:00","level":"INFO","msg":"stream: created new stream","id":"o3l1vpla"} +{"time":"2026-05-29T19:47:07.946954411+08:00","level":"INFO","msg":"handler: started","stream_id":"o3l1vpla"} +{"time":"2026-05-29T19:47:07.94706896+08:00","level":"INFO","msg":"stream: started","id":"o3l1vpla"} +{"time":"2026-05-29T19:47:07.947088794+08:00","level":"INFO","msg":"writer: started","stream_id":"o3l1vpla"} +{"time":"2026-05-29T19:47:07.947090844+08:00","level":"INFO","msg":"sender: started","stream_id":"o3l1vpla"} +{"time":"2026-05-29T19:47:07.948297319+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-29T19:47:08.206739239+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-29T19:47:08.62874404+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a47ee7cc56a7d98ad3f50a5a4c0649595b715b64e89e47637ac5aff422ec7383"} +{"time":"2026-05-29T19:47:08.628809977+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=883c4209c5d742770b3a6d59ac71abe2715046eb59ec69dccaa1a5b567ba579b"} +{"time":"2026-05-29T19:47:08.628827792+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-metadata.json18B406CC9D55826317e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a47ee7cc56a7d98ad3f50a5a4c0649595b715b64e89e47637ac5aff422ec7383, Size: 2849}"} +{"time":"2026-05-29T19:47:08.628868986+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/config.yaml18B406CC9F0C3E1B29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=883c4209c5d742770b3a6d59ac71abe2715046eb59ec69dccaa1a5b567ba579b, Size: 7755}"} +{"time":"2026-05-29T19:47:08.630071945+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cde00db00b44971fb11a4d87808dfbc4eeeac5cbe9873b1fa83739955ab417da"} +{"time":"2026-05-29T19:47:08.630148543+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/output.log18B406CC9F05F21929678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cde00db00b44971fb11a4d87808dfbc4eeeac5cbe9873b1fa83739955ab417da, Size: 110}"} +{"time":"2026-05-29T19:47:08.63086663+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e4bb8822ef29df26949ff5ddef85264847f7f4b05c641a324b91d1585449ba55"} +{"time":"2026-05-29T19:47:08.630961997+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/requirements.txt18B406CC9DD7FC864b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e4bb8822ef29df26949ff5ddef85264847f7f4b05c641a324b91d1585449ba55, Size: 2982}"} +{"time":"2026-05-29T19:47:08.633145978+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7226b6bd23e4ef9db8e48e70a2774674ebb0cbec0bb484247d588b1c4633fbc5"} +{"time":"2026-05-29T19:47:08.633266177+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-summary.json18B406CC9F223DB329678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7226b6bd23e4ef9db8e48e70a2774674ebb0cbec0bb484247d588b1c4633fbc5, Size: 267}"} +{"time":"2026-05-29T19:47:08.633747103+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=03e385aef9c6b56540adbe0ddb3f51b263ba0e7776fdc7debbb663e00aa220b0"} +{"time":"2026-05-29T19:47:08.633803977+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/o3l1vpla/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/code/reward/rl_reward_video_reversal.py18B406CC9F05F1CD29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/o3l1vpla/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T114708Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=03e385aef9c6b56540adbe0ddb3f51b263ba0e7776fdc7debbb663e00aa220b0, Size: 14790}"} +{"time":"2026-05-29T19:47:08.63416604+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-29T19:47:08.676087931+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-29T19:47:08.685079701+08:00","level":"INFO","msg":"stream: closing","id":"o3l1vpla"} +{"time":"2026-05-29T19:47:08.685100599+08:00","level":"INFO","msg":"handler: closed","stream_id":"o3l1vpla"} +{"time":"2026-05-29T19:47:08.685170573+08:00","level":"INFO","msg":"sender: closed","stream_id":"o3l1vpla"} +{"time":"2026-05-29T19:47:08.685177465+08:00","level":"INFO","msg":"stream: closed","id":"o3l1vpla"} diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug.log b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..f71eb7a5436d6ad2409d46929ce30e8faf39a44b --- /dev/null +++ b/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug.log @@ -0,0 +1,24 @@ +2026-05-29 19:47:07,401 INFO MainThread:1212640 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_setup.py:_flush():81] Configure stats pid to 1212640 +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug.log +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260529_194707-o3l1vpla/logs/debug-internal.log +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_init.py:init():844] calling init triggers +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'o3l1vpla', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 1, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-29 19:47:07,402 INFO MainThread:1212640 [wandb_init.py:init():892] starting backend +2026-05-29 19:47:07,656 INFO MainThread:1212640 [wandb_init.py:init():895] sending inform_init request +2026-05-29 19:47:07,660 INFO MainThread:1212640 [wandb_init.py:init():903] backend started and connected +2026-05-29 19:47:07,662 INFO MainThread:1212640 [wandb_init.py:init():973] updated telemetry +2026-05-29 19:47:07,673 INFO MainThread:1212640 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-29 19:47:08,204 INFO MainThread:1212640 [wandb_init.py:init():1042] starting run threads in backend +2026-05-29 19:47:08,315 INFO MainThread:1212640 [wandb_run.py:_console_start():2524] atexit reg +2026-05-29 19:47:08,316 INFO MainThread:1212640 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-29 19:47:08,316 INFO MainThread:1212640 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-29 19:47:08,316 INFO MainThread:1212640 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-29 19:47:08,318 INFO MainThread:1212640 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-29 19:47:08,479 INFO MainThread:1212640 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/o3l1vpla +2026-05-29 19:47:08,480 INFO MainThread:1212640 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-29 19:47:08,480 INFO MainThread:1212640 [wandb_run.py:_restore():2472] restore +2026-05-29 19:47:08,480 INFO MainThread:1212640 [wandb_run.py:_restore():2478] restore done +2026-05-29 19:47:08,684 INFO MainThread:1212640 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260529_194707-o3l1vpla/run-o3l1vpla.wandb b/reward/wandb/run-20260529_194707-o3l1vpla/run-o3l1vpla.wandb new file mode 100644 index 0000000000000000000000000000000000000000..1de21dbf507290ad49c7c5292fbba6067abe99d2 Binary files /dev/null and b/reward/wandb/run-20260529_194707-o3l1vpla/run-o3l1vpla.wandb differ diff --git a/reward/wandb/run-20260529_221548-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260529_221548-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..ee0b5a98f3fdcf5776eb09ac4eeb007093c73b19 --- /dev/null +++ b/reward/wandb/run-20260529_221548-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T14:15:48.972009Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=2" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "624733896704" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "of7uuhm8djcrujnrkdjlueoxbofh7yt3" +} \ No newline at end of file diff --git a/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..adea845f61bc7f19a66c2f78f80db2e550aaf230 --- /dev/null +++ b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-29T22:15:49.038496026+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpextmq8yv/port-1544888.txt","pid":1544888,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-29T22:15:49.039517557+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1544888} +{"time":"2026-05-29T22:15:49.039525747+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1544888-1545045-3458517359/socket","Net":"unix"}} +{"time":"2026-05-29T22:15:49.220936217+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-29T22:15:49.231304816+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-29T22:15:49.532027363+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-29T22:15:49.887995417+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"zs4zg8uz72tg"} +{"time":"2026-05-29T22:15:50.066303944+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"zs4zg8uz72tg"} +{"time":"2026-05-29T22:15:50.067591053+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068479156+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068513746+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068538601+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068549089+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068566656+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-29T22:15:50.068599467+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-29T22:15:50.068611716+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-29T22:15:50.06874089+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1544888-1545045-3458517359/socket","Net":"unix"}} +{"time":"2026-05-29T22:15:50.068796137+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..b2706257ae4e361940dcabe72f110d61d1ef04d0 --- /dev/null +++ b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-29T22:15:49.231529459+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-29T22:15:49.531421968+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-29T22:15:49.531682346+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:49.53183915+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:49.532000568+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:49.532047358+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:49.532051598+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:49.534503641+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-29T22:15:49.676991563+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-29T22:15:49.886864995+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":2,"current":23} +{"time":"2026-05-29T22:15:50.012976753+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c618949f54f91ead5f029d477b6f3a66b28049d8038323dc4e7c19987324b9d"} +{"time":"2026-05-29T22:15:50.013148766+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B40EE9CACCD1E729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c618949f54f91ead5f029d477b6f3a66b28049d8038323dc4e7c19987324b9d, Size: 339}"} +{"time":"2026-05-29T22:15:50.013183236+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c615766f40662e6943a47d0789f9209b0dce3b6b820193907bbc7ec403b423a2"} +{"time":"2026-05-29T22:15:50.013319357+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B40EE9CAC0BA7229678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c615766f40662e6943a47d0789f9209b0dce3b6b820193907bbc7ec403b423a2, Size: 7994}"} +{"time":"2026-05-29T22:15:50.013842455+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9e76d2be777d1c7ca83aad7eb2ea22d1cbf6d583c423df7e1d096b094110beb1"} +{"time":"2026-05-29T22:15:50.013942597+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B40EE9CACDD07029678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9e76d2be777d1c7ca83aad7eb2ea22d1cbf6d583c423df7e1d096b094110beb1, Size: 2849}"} +{"time":"2026-05-29T22:15:50.014336234+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e6a49b3ce09eab10673811108dd02727a560b4aa9b50821a1ce992f363b5e7f7"} +{"time":"2026-05-29T22:15:50.014497174+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B40EE9CB5CF82117e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e6a49b3ce09eab10673811108dd02727a560b4aa9b50821a1ce992f363b5e7f7, Size: 2982}"} +{"time":"2026-05-29T22:15:50.015699606+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=eefbe5c2c8d9371e1c63c8ec320a10cf528f816dec9c2f86a97a3194a7363fe0"} +{"time":"2026-05-29T22:15:50.015867408+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B40EE9CB77AB3817e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=eefbe5c2c8d9371e1c63c8ec320a10cf528f816dec9c2f86a97a3194a7363fe0, Size: 110}"} +{"time":"2026-05-29T22:15:50.022155163+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9d1064af61d48bce0c860f3c3c26be81a940a20ec21aab3db9f87403d7af47e4"} +{"time":"2026-05-29T22:15:50.022205902+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B40EE9CB5CA45917e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T141549Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9d1064af61d48bce0c860f3c3c26be81a940a20ec21aab3db9f87403d7af47e4, Size: 14790}"} +{"time":"2026-05-29T22:15:50.022643716+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-29T22:15:50.062268078+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-29T22:15:50.067618841+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:50.067638466+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:50.067710417+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-29T22:15:50.06774884+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..a48e9f956997b48c2ae1f5924bf698b1e02ebf18 --- /dev/null +++ b/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-29 22:15:48,974 INFO MainThread:1544888 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-29 22:15:48,974 INFO MainThread:1544888 [wandb_setup.py:_flush():81] Configure stats pid to 1544888 +2026-05-29 22:15:48,974 INFO MainThread:1544888 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-29 22:15:48,975 INFO MainThread:1544888 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug.log +2026-05-29 22:15:48,975 INFO MainThread:1544888 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260529_221548-fmmkx1a5/logs/debug-internal.log +2026-05-29 22:15:48,975 INFO MainThread:1544888 [wandb_init.py:init():844] calling init triggers +2026-05-29 22:15:48,975 INFO MainThread:1544888 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 2, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-29 22:15:48,975 INFO MainThread:1544888 [wandb_init.py:init():892] starting backend +2026-05-29 22:15:49,221 INFO MainThread:1544888 [wandb_init.py:init():895] sending inform_init request +2026-05-29 22:15:49,227 INFO MainThread:1544888 [wandb_init.py:init():903] backend started and connected +2026-05-29 22:15:49,228 INFO MainThread:1544888 [wandb_init.py:init():973] updated telemetry +2026-05-29 22:15:49,234 INFO MainThread:1544888 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-29 22:15:49,670 INFO MainThread:1544888 [wandb_init.py:init():1037] run resumed +2026-05-29 22:15:49,674 INFO MainThread:1544888 [wandb_init.py:init():1042] starting run threads in backend +2026-05-29 22:15:49,764 INFO MainThread:1544888 [wandb_run.py:_console_start():2524] atexit reg +2026-05-29 22:15:49,765 INFO MainThread:1544888 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-29 22:15:49,765 INFO MainThread:1544888 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-29 22:15:49,765 INFO MainThread:1544888 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-29 22:15:49,769 INFO MainThread:1544888 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-29 22:15:49,886 INFO MainThread:1544888 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-29 22:15:49,887 INFO MainThread:1544888 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-29 22:15:49,887 INFO MainThread:1544888 [wandb_run.py:_restore():2472] restore +2026-05-29 22:15:49,887 INFO MainThread:1544888 [wandb_run.py:_restore():2478] restore done +2026-05-29 22:15:50,066 INFO MainThread:1544888 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260529_221548-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260529_221548-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..037a25391d53df556f5d2218cb19789641cd885e Binary files /dev/null and b/reward/wandb/run-20260529_221548-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_001305-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_001305-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c75401913f1be31733a2e4394199d509b62cc534 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + nbjlrwv1znq9ynwn7j97kr9f61plnzak: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=4 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625472454656" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T16:13:05.220431Z" + writerId: nbjlrwv1znq9ynwn7j97kr9f61plnzak + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 4 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_001305-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..c6c3f90b4fab1e89fa3b2b8cf261dcef65af3bb6 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 4 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4590 avg length: 126.43 diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_001305-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..b2aaf225fb011cdaf3b661a9c5b6ab6800d90658 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T16:13:05.220431Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=4" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625472454656" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "nbjlrwv1znq9ynwn7j97kr9f61plnzak" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..fb6eaf39544157fe562f27b9f04cdb0960edc96e --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_runtime":2202,"reward/t_grpo_bonus":0.2718750000000003,"reward/unbiased_bonus":0.09374999999999996,"train/learning_rate":7.300325188655752e-07,"reward/acc":0.396484375,"_step":22,"train/loss":0.3783190548419952,"reward/train_step":1,"reward/avg_response_length":124.568359375,"_wandb":{"runtime":2202},"_timestamp":1.7800614303455548e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..02e4280d8c5e874d9d3f7b427e7c08f882b0da85 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T00:13:05.286065679+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpp62euswa/port-1751242.txt","pid":1751242,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T00:13:05.287189973+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1751242} +{"time":"2026-05-30T00:13:05.287151511+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1751242-1751409-2046619474/socket","Net":"unix"}} +{"time":"2026-05-30T00:13:05.468769376+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T00:13:05.477564719+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T00:13:05.780034643+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T00:13:06.242278206+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"k7igfwpnqhw4"} +{"time":"2026-05-30T00:13:06.425328395+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"k7igfwpnqhw4"} +{"time":"2026-05-30T00:13:06.42595584+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T00:13:06.42694024+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T00:13:06.426952049+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T00:13:06.426964821+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T00:13:06.426975472+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T00:13:06.426985269+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T00:13:06.427015094+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T00:13:06.427038141+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T00:13:06.427156462+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1751242-1751409-2046619474/socket","Net":"unix"}} +{"time":"2026-05-30T00:13:06.427212116+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..abc4a64fd7694d6e29632ad1ce6f4c38065d3081 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T00:13:05.477770765+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T00:13:05.779450034+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T00:13:05.779652585+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:05.779744219+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:05.780014388+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:05.780055478+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:05.780055506+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:05.782697905+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T00:13:06.028313692+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T00:13:06.2385663+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":4,"current":23} +{"time":"2026-05-30T00:13:06.368370958+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8578fc7b87857bdd751003ba69247abe51fa215fdca5c83876ba57e01529f06f"} +{"time":"2026-05-30T00:13:06.368497869+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B415501297BED117e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8578fc7b87857bdd751003ba69247abe51fa215fdca5c83876ba57e01529f06f, Size: 110}"} +{"time":"2026-05-30T00:13:06.368902337+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=74595d174d88f5f42545e11c808630835e87001e8a5296f7c2c718f2d4995bdc"} +{"time":"2026-05-30T00:13:06.369039843+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B415501291CB6117e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=74595d174d88f5f42545e11c808630835e87001e8a5296f7c2c718f2d4995bdc, Size: 7994}"} +{"time":"2026-05-30T00:13:06.369639945+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a2d0a58bb258141ad482f96245ac2182bdfbbdab1e2fa96a04db7ecbc47d2843"} +{"time":"2026-05-30T00:13:06.369798939+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B415501216918429678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a2d0a58bb258141ad482f96245ac2182bdfbbdab1e2fa96a04db7ecbc47d2843, Size: 2849}"} +{"time":"2026-05-30T00:13:06.370661611+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=99480e690e5934203d2d0ba772e2d0ce0a39c37c4d8b6b6d9db3c4482f0b9fc1"} +{"time":"2026-05-30T00:13:06.370783078+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B41550110447D34b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=99480e690e5934203d2d0ba772e2d0ce0a39c37c4d8b6b6d9db3c4482f0b9fc1, Size: 341}"} +{"time":"2026-05-30T00:13:06.370857593+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=932abcfbee1a259382384175d32ca10d553bb10e5e18f491f305f95f6f890ab1"} +{"time":"2026-05-30T00:13:06.370975128+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B41550122B1FAB29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=932abcfbee1a259382384175d32ca10d553bb10e5e18f491f305f95f6f890ab1, Size: 2982}"} +{"time":"2026-05-30T00:13:06.378523807+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ce774c4d207911537ae5971450542027f4d47ab73f9f0e5a233371ed80539cb7"} +{"time":"2026-05-30T00:13:06.378678161+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B4155010FA7E6E4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T161306Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ce774c4d207911537ae5971450542027f4d47ab73f9f0e5a233371ed80539cb7, Size: 14790}"} +{"time":"2026-05-30T00:13:06.378940351+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T00:13:06.421106068+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T00:13:06.425978529+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:06.425995378+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:06.426060973+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T00:13:06.426080026+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..2530ad9cf70e5c62c62a7a9ce117784884370098 --- /dev/null +++ b/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_setup.py:_flush():81] Configure stats pid to 1751242 +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug.log +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_001305-fmmkx1a5/logs/debug-internal.log +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_init.py:init():844] calling init triggers +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 4, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 00:13:05,223 INFO MainThread:1751242 [wandb_init.py:init():892] starting backend +2026-05-30 00:13:05,469 INFO MainThread:1751242 [wandb_init.py:init():895] sending inform_init request +2026-05-30 00:13:05,474 INFO MainThread:1751242 [wandb_init.py:init():903] backend started and connected +2026-05-30 00:13:05,475 INFO MainThread:1751242 [wandb_init.py:init():973] updated telemetry +2026-05-30 00:13:05,479 INFO MainThread:1751242 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 00:13:06,023 INFO MainThread:1751242 [wandb_init.py:init():1037] run resumed +2026-05-30 00:13:06,026 INFO MainThread:1751242 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 00:13:06,116 INFO MainThread:1751242 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 00:13:06,116 INFO MainThread:1751242 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 00:13:06,116 INFO MainThread:1751242 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 00:13:06,116 INFO MainThread:1751242 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 00:13:06,120 INFO MainThread:1751242 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 00:13:06,238 INFO MainThread:1751242 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 00:13:06,238 INFO MainThread:1751242 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 00:13:06,239 INFO MainThread:1751242 [wandb_run.py:_restore():2472] restore +2026-05-30 00:13:06,239 INFO MainThread:1751242 [wandb_run.py:_restore():2478] restore done +2026-05-30 00:13:06,425 INFO MainThread:1751242 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_001305-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_001305-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..f453bb811e45e1fad70e30065523dc7b92b0db47 Binary files /dev/null and b/reward/wandb/run-20260530_001305-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_022315-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_022315-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4c6225842a9c3075b9573c5b2d64a50b87f90b17 --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + rit67u7afan4qam30286z3mhxid958av: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=6 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625479712768" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T18:23:15.496253Z" + writerId: rit67u7afan4qam30286z3mhxid958av + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 6 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_022315-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..22a63f722d10a5341c866cc30f18117360db5b72 --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 6 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.3926 avg length: 126.23 diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_022315-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..717045cb318729380e5576fe645a218c4a66f3f1 --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T18:23:15.496253Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=6" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625479712768" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "rit67u7afan4qam30286z3mhxid958av" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..49e1f94c579f3e4e79f1b98777cfc4cde0ca472e --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_timestamp":1.7800760271916904e+09,"reward/train_step":1,"_step":26,"_wandb":{"runtime":4222},"train/learning_rate":7.985792958513929e-07,"reward/t_grpo_bonus":0.2718750000000003,"train/loss":-0.37430867552757263,"reward/avg_response_length":124.568359375,"reward/unbiased_bonus":0.09374999999999996,"reward/acc":0.396484375,"_runtime":4222} \ No newline at end of file diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..6e80dc962885a3c0c74057b25f5f4645c1c4c803 --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T02:23:15.564585624+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpvrnq85bv/port-1972975.txt","pid":1972975,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T02:23:15.567024905+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1972975} +{"time":"2026-05-30T02:23:15.56702786+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1972975-1973131-39973928/socket","Net":"unix"}} +{"time":"2026-05-30T02:23:15.745166446+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T02:23:15.755860291+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T02:23:16.055380273+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T02:23:16.546440823+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"fu9pap2v31pp"} +{"time":"2026-05-30T02:23:16.730663414+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"fu9pap2v31pp"} +{"time":"2026-05-30T02:23:16.732391613+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733226984+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733240787+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733255106+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733267833+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T02:23:16.733276961+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733350086+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1972975-1973131-39973928/socket","Net":"unix"}} +{"time":"2026-05-30T02:23:16.733430555+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733447157+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T02:23:16.733468785+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..d98597a7de2be9d5e93dd67ae275b2c0b8d491cd --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T02:23:15.756016562+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T02:23:16.054970322+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T02:23:16.055173873+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.055246728+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.055363043+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.055380438+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.055393379+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.059603255+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T02:23:16.335493869+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T02:23:16.545805834+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":6,"current":27} +{"time":"2026-05-30T02:23:16.677526751+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=821bfbf28a105fa324036c7aab937e5955c74cc8ce99454b4e05e18681bed874"} +{"time":"2026-05-30T02:23:16.677717912+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B41C6A8D4048084b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=821bfbf28a105fa324036c7aab937e5955c74cc8ce99454b4e05e18681bed874, Size: 7994}"} +{"time":"2026-05-30T02:23:16.678145344+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9936bf6fb1a6034661afb45fccd887766fa50da78ed3dd0dd0a9c75ac6738e28"} +{"time":"2026-05-30T02:23:16.67830001+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B41C6A8C90601F29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9936bf6fb1a6034661afb45fccd887766fa50da78ed3dd0dd0a9c75ac6738e28, Size: 343}"} +{"time":"2026-05-30T02:23:16.679660464+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d1a151f9161d8724a96f5cf5290917f0f27f95e56c278d8aeb0bef59702e3624"} +{"time":"2026-05-30T02:23:16.679851441+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B41C6A8D3A116E17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d1a151f9161d8724a96f5cf5290917f0f27f95e56c278d8aeb0bef59702e3624, Size: 110}"} +{"time":"2026-05-30T02:23:16.68138543+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=63d9ebec3584b60becb67d7402bcda98014208276ed41ff4039e920fa99f4335"} +{"time":"2026-05-30T02:23:16.681533107+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B41C6A8D37E2C717e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=63d9ebec3584b60becb67d7402bcda98014208276ed41ff4039e920fa99f4335, Size: 2849}"} +{"time":"2026-05-30T02:23:16.685224569+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7f134f6231481934027ed53fe2c3b34d2356fabc7496ac5ed8bf95a505cf10e5"} +{"time":"2026-05-30T02:23:16.685330732+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B41C6A8C9F174129678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7f134f6231481934027ed53fe2c3b34d2356fabc7496ac5ed8bf95a505cf10e5, Size: 14790}"} +{"time":"2026-05-30T02:23:16.686129396+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=33b21b6b3a8f6747127fcbaccf98aee64e2a8e82b3fbfe76e620d358ad90e198"} +{"time":"2026-05-30T02:23:16.68618286+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B41C6A8CF03B7E29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T182316Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=33b21b6b3a8f6747127fcbaccf98aee64e2a8e82b3fbfe76e620d358ad90e198, Size: 2982}"} +{"time":"2026-05-30T02:23:16.686494398+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T02:23:16.727909569+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T02:23:16.732429923+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.732456013+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.732531196+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T02:23:16.732548218+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..57ddff6c657cab5886f1a7e9815608df9cbbe72d --- /dev/null +++ b/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_setup.py:_flush():81] Configure stats pid to 1972975 +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug.log +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_022315-fmmkx1a5/logs/debug-internal.log +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_init.py:init():844] calling init triggers +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 6, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 02:23:15,499 INFO MainThread:1972975 [wandb_init.py:init():892] starting backend +2026-05-30 02:23:15,745 INFO MainThread:1972975 [wandb_init.py:init():895] sending inform_init request +2026-05-30 02:23:15,751 INFO MainThread:1972975 [wandb_init.py:init():903] backend started and connected +2026-05-30 02:23:15,753 INFO MainThread:1972975 [wandb_init.py:init():973] updated telemetry +2026-05-30 02:23:15,756 INFO MainThread:1972975 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 02:23:16,328 INFO MainThread:1972975 [wandb_init.py:init():1037] run resumed +2026-05-30 02:23:16,333 INFO MainThread:1972975 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 02:23:16,425 INFO MainThread:1972975 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 02:23:16,425 INFO MainThread:1972975 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 02:23:16,425 INFO MainThread:1972975 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 02:23:16,425 INFO MainThread:1972975 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 02:23:16,428 INFO MainThread:1972975 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 02:23:16,545 INFO MainThread:1972975 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 02:23:16,545 INFO MainThread:1972975 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 02:23:16,546 INFO MainThread:1972975 [wandb_run.py:_restore():2472] restore +2026-05-30 02:23:16,546 INFO MainThread:1972975 [wandb_run.py:_restore():2478] restore done +2026-05-30 02:23:16,731 INFO MainThread:1972975 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_022315-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_022315-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..109083db0ced296dbd0ca5721ad3bb0de9c8bf73 Binary files /dev/null and b/reward/wandb/run-20260530_022315-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_042845-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_042845-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3bb2c22b9ae3595392e848898f9a92112d438d04 --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + iv8zvsdp3bk0inm3f71d72crajbgfbvu: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=8 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625480916992" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T20:28:45.290476Z" + writerId: iv8zvsdp3bk0inm3f71d72crajbgfbvu + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 8 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_042845-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..143ed73bf3974799af73cb0796ccd9302281a7df --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 8 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4688 avg length: 126.02 diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_042845-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..67b0a696609fc5de5c9f43000da6eb8a48271f6d --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T20:28:45.290476Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=8" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625480916992" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "iv8zvsdp3bk0inm3f71d72crajbgfbvu" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..fd1cc2d84fbb5653827d684c243f9c374cb1d58d --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/acc":0.396484375,"_runtime":5992,"reward/avg_response_length":124.568359375,"train/loss":-0.37430867552757263,"reward/train_step":1,"_timestamp":1.7800760271916904e+09,"_wandb":{"runtime":5992},"reward/t_grpo_bonus":0.2718750000000003,"train/learning_rate":7.985792958513929e-07,"reward/unbiased_bonus":0.09374999999999996,"_step":26} \ No newline at end of file diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..1db874c32d8dc7c1e0c328e933b1f9386cbde6c5 --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T04:28:45.357187774+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpe2ektbof/port-2189265.txt","pid":2189265,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T04:28:45.357749747+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":2189265} +{"time":"2026-05-30T04:28:45.357737063+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-2189265-2189429-3673607564/socket","Net":"unix"}} +{"time":"2026-05-30T04:28:45.538534603+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T04:28:45.547157906+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T04:28:45.852526644+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T04:28:46.370665657+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"viw1ypxpd56s"} +{"time":"2026-05-30T04:28:46.550283848+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"viw1ypxpd56s"} +{"time":"2026-05-30T04:28:46.551572545+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552278813+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552287358+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552297327+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552305555+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552320535+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T04:28:46.552335675+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552423726+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T04:28:46.552482901+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-2189265-2189429-3673607564/socket","Net":"unix"}} +{"time":"2026-05-30T04:28:46.552538115+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..d4e112872960ee71c89f106f23066943c08f4ff0 --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T04:28:45.547363162+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T04:28:45.851985924+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T04:28:45.852256915+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:45.852386761+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:45.852507919+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:45.852536962+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:45.852534157+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:45.858252069+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T04:28:46.158666066+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T04:28:46.369997093+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":8,"current":27} +{"time":"2026-05-30T04:28:46.501935127+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dadf76cf88cfe1ec58e2105e56b323d6ac39772d8e5bb0ad7ed85e429bd4e85e"} +{"time":"2026-05-30T04:28:46.502060021+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B42343B965E10817e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dadf76cf88cfe1ec58e2105e56b323d6ac39772d8e5bb0ad7ed85e429bd4e85e, Size: 110}"} +{"time":"2026-05-30T04:28:46.502198522+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6aa16e413100df81d7b2c203db0e968d616ffff4e373204c41041478c7fbfe13"} +{"time":"2026-05-30T04:28:46.502298169+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e05b7e592252a0fe524561bedbb211f5123fe01e58341c518a6f90f8f8ccad28"} +{"time":"2026-05-30T04:28:46.50236231+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B42343B966889E17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6aa16e413100df81d7b2c203db0e968d616ffff4e373204c41041478c7fbfe13, Size: 7994}"} +{"time":"2026-05-30T04:28:46.502536921+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B42343B9A1978F4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e05b7e592252a0fe524561bedbb211f5123fe01e58341c518a6f90f8f8ccad28, Size: 2849}"} +{"time":"2026-05-30T04:28:46.5035542+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=38aaaf3093af2965c378a7cf0d77ea697514c7df7c85d2d318d1ae08d7932f11"} +{"time":"2026-05-30T04:28:46.503761198+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B42343B8DC768729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=38aaaf3093af2965c378a7cf0d77ea697514c7df7c85d2d318d1ae08d7932f11, Size: 343}"} +{"time":"2026-05-30T04:28:46.505924826+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=326cb6c5ef32f7ec9d65c1165435635a9e1d486c435f164c34ec192c8dcdbd4d"} +{"time":"2026-05-30T04:28:46.506020205+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B42343B9BD0B614b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=326cb6c5ef32f7ec9d65c1165435635a9e1d486c435f164c34ec192c8dcdbd4d, Size: 2982}"} +{"time":"2026-05-30T04:28:46.506408954+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=fa24244b919ee0c3b1debd877157ca47f4dfaf89a9c2928302cae995ae265dc6"} +{"time":"2026-05-30T04:28:46.506468235+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B42343B958772917e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T202846Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=fa24244b919ee0c3b1debd877157ca47f4dfaf89a9c2928302cae995ae265dc6, Size: 14790}"} +{"time":"2026-05-30T04:28:46.506804552+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T04:28:46.547050766+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T04:28:46.551595229+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:46.551609585+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:46.551670861+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T04:28:46.551687822+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..8e348c56f48d6e35ab5faea9ccae3d575e57246c --- /dev/null +++ b/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_setup.py:_flush():81] Configure stats pid to 2189265 +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug.log +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_042845-fmmkx1a5/logs/debug-internal.log +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_init.py:init():844] calling init triggers +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 8, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 04:28:45,293 INFO MainThread:2189265 [wandb_init.py:init():892] starting backend +2026-05-30 04:28:45,538 INFO MainThread:2189265 [wandb_init.py:init():895] sending inform_init request +2026-05-30 04:28:45,543 INFO MainThread:2189265 [wandb_init.py:init():903] backend started and connected +2026-05-30 04:28:45,545 INFO MainThread:2189265 [wandb_init.py:init():973] updated telemetry +2026-05-30 04:28:45,548 INFO MainThread:2189265 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 04:28:46,152 INFO MainThread:2189265 [wandb_init.py:init():1037] run resumed +2026-05-30 04:28:46,157 INFO MainThread:2189265 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 04:28:46,246 INFO MainThread:2189265 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 04:28:46,246 INFO MainThread:2189265 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 04:28:46,246 INFO MainThread:2189265 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 04:28:46,246 INFO MainThread:2189265 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 04:28:46,250 INFO MainThread:2189265 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 04:28:46,369 INFO MainThread:2189265 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 04:28:46,370 INFO MainThread:2189265 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 04:28:46,370 INFO MainThread:2189265 [wandb_run.py:_restore():2472] restore +2026-05-30 04:28:46,370 INFO MainThread:2189265 [wandb_run.py:_restore():2478] restore done +2026-05-30 04:28:46,550 INFO MainThread:2189265 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_042845-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_042845-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..6a6535e586eea5126c5d106a7afd9841099391a8 Binary files /dev/null and b/reward/wandb/run-20260530_042845-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_063905-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_063905-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6985d2f891dc502c2daebc65f74b10db4e189eb2 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + cabjrf3uennqcbtqsnxq22932fx3o8bo: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=10 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625483096064" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T22:39:05.986619Z" + writerId: cabjrf3uennqcbtqsnxq22932fx3o8bo + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 10 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_063905-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..5627c7ef5fc72c4661d3116ab264d566978f13fa --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 10 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5078 avg length: 125.81 diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_063905-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..40cd563fc15999848faa05e90dae1ef4b33fab87 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T22:39:05.986619Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=10" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625483096064" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "cabjrf3uennqcbtqsnxq22932fx3o8bo" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..bcd2d6b8fbfd03a757c31618224227d4244ee054 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/unbiased_bonus":0.09374999999999996,"reward/train_step":1,"_step":26,"reward/t_grpo_bonus":0.2718750000000003,"reward/avg_response_length":124.568359375,"_timestamp":1.7800760271916904e+09,"_runtime":8003,"reward/acc":0.396484375,"train/learning_rate":7.985792958513929e-07,"_wandb":{"runtime":8003},"train/loss":-0.37430867552757263} \ No newline at end of file diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..b6c33d49b25b54551108e41cdb541c97fd700864 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T06:39:06.05490613+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpjsww3w3q/port-2412569.txt","pid":2412569,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T06:39:06.055506751+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":2412569} +{"time":"2026-05-30T06:39:06.055494969+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-2412569-2412719-1681422895/socket","Net":"unix"}} +{"time":"2026-05-30T06:39:06.2353733+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T06:39:06.244525054+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:06.644565256+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:07.148054071+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"n8q3wq6nxi3b"} +{"time":"2026-05-30T06:39:07.337938249+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"n8q3wq6nxi3b"} +{"time":"2026-05-30T06:39:07.34042734+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:07.341225439+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:07.341241498+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T06:39:07.341258579+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T06:39:07.341276174+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T06:39:07.341274108+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T06:39:07.34136357+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T06:39:07.34138241+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T06:39:07.341401134+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-2412569-2412719-1681422895/socket","Net":"unix"}} +{"time":"2026-05-30T06:39:07.34144612+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..3ea4fb511f0cc5fcd987482e587bef8c32f525fc --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T06:39:06.244690631+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T06:39:06.642595389+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T06:39:06.642793447+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:06.642910518+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:06.644506607+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:06.644619048+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:06.644674388+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:06.648017091+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T06:39:06.940513948+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T06:39:07.147476004+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":10,"current":27} +{"time":"2026-05-30T06:39:07.283561627+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9c51a543ad6c1b227ffb5e8c3a13926cef4f8f0e528a3e85370b41607c5ba04a"} +{"time":"2026-05-30T06:39:07.28374234+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B42A60A405A11317e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9c51a543ad6c1b227ffb5e8c3a13926cef4f8f0e528a3e85370b41607c5ba04a, Size: 7996}"} +{"time":"2026-05-30T06:39:07.284056632+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f6d03412f4056c00a2264b367afc8b9766705c6a1e9b9f641dfbc7dba1086e0f"} +{"time":"2026-05-30T06:39:07.284128343+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c4a99f9998a12c3798a780d31dc151bfd8b79eef8c7f91d38b9b3c9c58f0fe72"} +{"time":"2026-05-30T06:39:07.284132103+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5000161ea1075e98310624ad182b5065740d7af7afd2cb8dc112375e983f36e6"} +{"time":"2026-05-30T06:39:07.284247627+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B42A60A385E98C29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c4a99f9998a12c3798a780d31dc151bfd8b79eef8c7f91d38b9b3c9c58f0fe72, Size: 2982}"} +{"time":"2026-05-30T06:39:07.284339004+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B42A60A385A10529678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5000161ea1075e98310624ad182b5065740d7af7afd2cb8dc112375e983f36e6, Size: 343}"} +{"time":"2026-05-30T06:39:07.284353812+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=197277e08c852de3d8f87882259b6178e5a3bdd1e8bd30967c340fdb89802018"} +{"time":"2026-05-30T06:39:07.284174193+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B42A60A464E0EF4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f6d03412f4056c00a2264b367afc8b9766705c6a1e9b9f641dfbc7dba1086e0f, Size: 2850}"} +{"time":"2026-05-30T06:39:07.284554128+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B42A60A422677F17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=197277e08c852de3d8f87882259b6178e5a3bdd1e8bd30967c340fdb89802018, Size: 111}"} +{"time":"2026-05-30T06:39:07.290872409+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=43cdfb4966d9902bb2657b32be8c3b776d26f51680b4425297ba292f938e5070"} +{"time":"2026-05-30T06:39:07.290992105+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B42A60A41AF7A617e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223907Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=43cdfb4966d9902bb2657b32be8c3b776d26f51680b4425297ba292f938e5070, Size: 14790}"} +{"time":"2026-05-30T06:39:07.291881333+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T06:39:07.334580507+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T06:39:07.340477119+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:07.340505075+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:07.340594381+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:07.34061829+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..3cd2fa34378d925453c447605e496c018f0edaf6 --- /dev/null +++ b/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 06:39:05,989 INFO MainThread:2412569 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 06:39:05,989 INFO MainThread:2412569 [wandb_setup.py:_flush():81] Configure stats pid to 2412569 +2026-05-30 06:39:05,989 INFO MainThread:2412569 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 06:39:05,989 INFO MainThread:2412569 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug.log +2026-05-30 06:39:05,990 INFO MainThread:2412569 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063905-fmmkx1a5/logs/debug-internal.log +2026-05-30 06:39:05,990 INFO MainThread:2412569 [wandb_init.py:init():844] calling init triggers +2026-05-30 06:39:05,990 INFO MainThread:2412569 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 10, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 06:39:05,990 INFO MainThread:2412569 [wandb_init.py:init():892] starting backend +2026-05-30 06:39:06,235 INFO MainThread:2412569 [wandb_init.py:init():895] sending inform_init request +2026-05-30 06:39:06,240 INFO MainThread:2412569 [wandb_init.py:init():903] backend started and connected +2026-05-30 06:39:06,242 INFO MainThread:2412569 [wandb_init.py:init():973] updated telemetry +2026-05-30 06:39:06,246 INFO MainThread:2412569 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 06:39:06,934 INFO MainThread:2412569 [wandb_init.py:init():1037] run resumed +2026-05-30 06:39:06,938 INFO MainThread:2412569 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 06:39:07,028 INFO MainThread:2412569 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 06:39:07,028 INFO MainThread:2412569 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 06:39:07,028 INFO MainThread:2412569 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 06:39:07,028 INFO MainThread:2412569 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 06:39:07,032 INFO MainThread:2412569 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 06:39:07,147 INFO MainThread:2412569 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 06:39:07,147 INFO MainThread:2412569 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 06:39:07,147 INFO MainThread:2412569 [wandb_run.py:_restore():2472] restore +2026-05-30 06:39:07,147 INFO MainThread:2412569 [wandb_run.py:_restore():2478] restore done +2026-05-30 06:39:07,339 INFO MainThread:2412569 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_063905-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_063905-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..4d15260092b6ae6f1e71b2108e33e184f7540879 Binary files /dev/null and b/reward/wandb/run-20260530_063905-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_063912-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_063912-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..34257318f8ff034f91e8b82931a8beba5e8c217c --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + dbinq0zgbogrdo4ohjz5fcgj9q0fsxup: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=10 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625483104256" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-29T22:39:12.095450Z" + writerId: dbinq0zgbogrdo4ohjz5fcgj9q0fsxup + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 10 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_063912-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..5627c7ef5fc72c4661d3116ab264d566978f13fa --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 10 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5078 avg length: 125.81 diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_063912-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..16893d6f849ded3e21c2030c99fe39defc17272f --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-29T22:39:12.095450Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=10" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625483104256" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "dbinq0zgbogrdo4ohjz5fcgj9q0fsxup" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..e2eb660b93995848993e13f42634ee9227fec67a --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_wandb":{"runtime":8003},"train/learning_rate":7.985792958513929e-07,"_runtime":8003,"reward/t_grpo_bonus":0.2718750000000003,"reward/avg_response_length":124.568359375,"reward/unbiased_bonus":0.09374999999999996,"_timestamp":1.7800760271916904e+09,"reward/train_step":1,"train/loss":-0.37430867552757263,"_step":26,"reward/acc":0.396484375} \ No newline at end of file diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..89c4f7fbb506626d5fd611a111175242f180dea1 --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T06:39:12.162523739+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp7d0e5bp_/port-2412993.txt","pid":2412993,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T06:39:12.16338519+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":2412993} +{"time":"2026-05-30T06:39:12.163371562+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-2412993-2413150-1460272065/socket","Net":"unix"}} +{"time":"2026-05-30T06:39:12.343576579+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T06:39:12.353363274+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:12.660685832+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:13.087942334+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"1uaukwk5ablh"} +{"time":"2026-05-30T06:39:13.275060616+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"1uaukwk5ablh"} +{"time":"2026-05-30T06:39:13.275886909+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:13.276557466+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T06:39:13.27656763+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T06:39:13.276578158+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T06:39:13.276586555+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T06:39:13.27659938+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T06:39:13.27662021+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T06:39:13.276665646+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T06:39:13.276786795+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-2412993-2413150-1460272065/socket","Net":"unix"}} +{"time":"2026-05-30T06:39:13.276847022+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..d97ada41d18a5648f976fdeed31f13d4c7a136b9 --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T06:39:12.35351855+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T06:39:12.6600652+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T06:39:12.660278429+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:12.660375555+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:12.660662843+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:12.660665328+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:12.660675667+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:12.666502544+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T06:39:12.875853852+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T06:39:13.087220351+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":10,"current":27} +{"time":"2026-05-30T06:39:13.219754876+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c0d7d2dadfcc432a72bfc8c3095ce4c7c52bbcc7a4e672fb22b43a3ea23be0cf"} +{"time":"2026-05-30T06:39:13.219919135+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B42A6205EAA24417e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c0d7d2dadfcc432a72bfc8c3095ce4c7c52bbcc7a4e672fb22b43a3ea23be0cf, Size: 343}"} +{"time":"2026-05-30T06:39:13.220152013+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f5813cacf454dc6af6bcda089428eef71ef1ba03f8d782182725a0258ac2e8cd"} +{"time":"2026-05-30T06:39:13.220276744+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B42A6205557F1729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f5813cacf454dc6af6bcda089428eef71ef1ba03f8d782182725a0258ac2e8cd, Size: 111}"} +{"time":"2026-05-30T06:39:13.2212563+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9938614b1c19350c0dcc6ddbf1ce1faafcb8ba27943beb810780499589e010b4"} +{"time":"2026-05-30T06:39:13.22138051+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B42A62055AEADF29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9938614b1c19350c0dcc6ddbf1ce1faafcb8ba27943beb810780499589e010b4, Size: 2850}"} +{"time":"2026-05-30T06:39:13.222225796+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d2e93fa343aa9817650da7cf4f6895b031cf2a6214bbbcf67f3bb9ba9809a37f"} +{"time":"2026-05-30T06:39:13.222347116+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B42A62064B4D024b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d2e93fa343aa9817650da7cf4f6895b031cf2a6214bbbcf67f3bb9ba9809a37f, Size: 2982}"} +{"time":"2026-05-30T06:39:13.222589666+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9ed5d42f4693d1171d03a43e8c42acfc8c96e014c77bd76a59eaddaf75801a6e"} +{"time":"2026-05-30T06:39:13.222684458+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B42A62057C113629678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9ed5d42f4693d1171d03a43e8c42acfc8c96e014c77bd76a59eaddaf75801a6e, Size: 7996}"} +{"time":"2026-05-30T06:39:13.228579646+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f6b029b007050ae5a94be05d550a604be30b9636363b4607152993d4ba6be534"} +{"time":"2026-05-30T06:39:13.228687612+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B42A6205F3898517e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260529%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260529T223913Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f6b029b007050ae5a94be05d550a604be30b9636363b4607152993d4ba6be534, Size: 14790}"} +{"time":"2026-05-30T06:39:13.229029313+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T06:39:13.270666789+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T06:39:13.275905429+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:13.275920252+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:13.275979262+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T06:39:13.27599205+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..48a6ebfc059619a5f59f5e083a56349224718d89 --- /dev/null +++ b/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_setup.py:_flush():81] Configure stats pid to 2412993 +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug.log +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_063912-fmmkx1a5/logs/debug-internal.log +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_init.py:init():844] calling init triggers +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 10, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 06:39:12,098 INFO MainThread:2412993 [wandb_init.py:init():892] starting backend +2026-05-30 06:39:12,344 INFO MainThread:2412993 [wandb_init.py:init():895] sending inform_init request +2026-05-30 06:39:12,349 INFO MainThread:2412993 [wandb_init.py:init():903] backend started and connected +2026-05-30 06:39:12,350 INFO MainThread:2412993 [wandb_init.py:init():973] updated telemetry +2026-05-30 06:39:12,353 INFO MainThread:2412993 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 06:39:12,869 INFO MainThread:2412993 [wandb_init.py:init():1037] run resumed +2026-05-30 06:39:12,873 INFO MainThread:2412993 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 06:39:12,964 INFO MainThread:2412993 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 06:39:12,964 INFO MainThread:2412993 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 06:39:12,964 INFO MainThread:2412993 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 06:39:12,964 INFO MainThread:2412993 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 06:39:12,967 INFO MainThread:2412993 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 06:39:13,087 INFO MainThread:2412993 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 06:39:13,087 INFO MainThread:2412993 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 06:39:13,087 INFO MainThread:2412993 [wandb_run.py:_restore():2472] restore +2026-05-30 06:39:13,087 INFO MainThread:2412993 [wandb_run.py:_restore():2478] restore done +2026-05-30 06:39:13,275 INFO MainThread:2412993 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_063912-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_063912-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..8b1c21a4da0458264d064b6f1542104f78d7a7df Binary files /dev/null and b/reward/wandb/run-20260530_063912-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_094731-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..78722a5d41395696abb174b7dce72b29901deb5a --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 079674nfrrgwsrat4zg8evfgzrmditvc: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=13 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T01:47:31.852204Z" + writerId: 079674nfrrgwsrat4zg8evfgzrmditvc + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 13 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1bb31a6f6b51a28815e2d5e93ce49e0d92b9897c --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T01:47:31.852204Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=13" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "079674nfrrgwsrat4zg8evfgzrmditvc" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..b6328dca9c6c35dacbb135c90e44b42db494d2b7 --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_wandb":{"runtime":10662},"reward/unbiased_bonus":0.09374999999999996,"_timestamp":1.7801027754513717e+09,"train/loss":2.6498982906341553,"reward/t_grpo_bonus":0.2718750000000003,"train/learning_rate":8.236931423909135e-07,"reward/avg_response_length":124.568359375,"_step":28,"_runtime":10662,"reward/train_step":1,"reward/acc":0.396484375} \ No newline at end of file diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..b875c47f990ab9539a9fa5c3a50da158a774420d --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T09:47:31.916839156+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpt647xre4/port-2731469.txt","pid":2731469,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T09:47:31.91838095+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":2731469} +{"time":"2026-05-30T09:47:31.918319682+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-2731469-2731623-3039953975/socket","Net":"unix"}} +{"time":"2026-05-30T09:47:32.097564109+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T09:47:32.106616092+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T09:47:33.014223526+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T09:47:33.432787388+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tha9p33dbfep"} +{"time":"2026-05-30T09:47:33.626946127+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tha9p33dbfep"} +{"time":"2026-05-30T09:47:33.627587973+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T09:47:33.62814057+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T09:47:33.62815477+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T09:47:33.628170156+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T09:47:33.628185046+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T09:47:33.62818756+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T09:47:33.628270947+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-2731469-2731623-3039953975/socket","Net":"unix"}} +{"time":"2026-05-30T09:47:33.628307197+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T09:47:33.628324419+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T09:47:33.628340851+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..f5d2fb57e8aa894063bebb7ebc8d5abf25308f03 --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T09:47:32.106836159+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T09:47:33.013682969+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T09:47:33.013897003+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.013983481+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.014205055+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.014247677+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.014245881+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.018915796+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T09:47:33.224918613+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T09:47:33.431972018+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":13,"current":29} +{"time":"2026-05-30T09:47:33.570787536+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c45fafa0542260256dca1005ecd8e0d2f82fae4c4b0341e5f1f290eb7931f118"} +{"time":"2026-05-30T09:47:33.570905525+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B434A9174486374b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c45fafa0542260256dca1005ecd8e0d2f82fae4c4b0341e5f1f290eb7931f118, Size: 111}"} +{"time":"2026-05-30T09:47:33.571101573+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1f88bdb5e21f0295b019d5dbc158dc6787b9a3a2e015e47af55091e4b75b34fc"} +{"time":"2026-05-30T09:47:33.571203252+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B434A9174D04654b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1f88bdb5e21f0295b019d5dbc158dc6787b9a3a2e015e47af55091e4b75b34fc, Size: 976}"} +{"time":"2026-05-30T09:47:33.571354598+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=afc03f752fc13b4f4833c92448558b78f573abd273dfaff983fd299a24ff8508"} +{"time":"2026-05-30T09:47:33.571564821+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B434A9165BB5EE29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=afc03f752fc13b4f4833c92448558b78f573abd273dfaff983fd299a24ff8508, Size: 2982}"} +{"time":"2026-05-30T09:47:33.573102419+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7021dccf51e8dd9969d156a3deb0191d3892ed90cbf926b842bf56cba57a40e4"} +{"time":"2026-05-30T09:47:33.57313793+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d8fc626247b1ddaa115ad5be3b809756c47825d6645ce9417eb0ee239d65ffc0"} +{"time":"2026-05-30T09:47:33.573240201+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B434A91675441029678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d8fc626247b1ddaa115ad5be3b809756c47825d6645ce9417eb0ee239d65ffc0, Size: 343}"} +{"time":"2026-05-30T09:47:33.573261508+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B434A916753E1C29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7021dccf51e8dd9969d156a3deb0191d3892ed90cbf926b842bf56cba57a40e4, Size: 5678}"} +{"time":"2026-05-30T09:47:33.578161336+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=57802f662c4640efcdbe0d1b43316111519986e6b6065053707477247db9efbb"} +{"time":"2026-05-30T09:47:33.578213612+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B434A91708132A17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T014733Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=57802f662c4640efcdbe0d1b43316111519986e6b6065053707477247db9efbb, Size: 14790}"} +{"time":"2026-05-30T09:47:33.578508188+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T09:47:33.622277936+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T09:47:33.627622937+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.627656793+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.627731189+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T09:47:33.627751113+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..3b65b322c0af0aa05895b3f3c3c1270026e1f5b3 --- /dev/null +++ b/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_setup.py:_flush():81] Configure stats pid to 2731469 +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug.log +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_094731-fmmkx1a5/logs/debug-internal.log +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_init.py:init():844] calling init triggers +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 13, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 09:47:31,854 INFO MainThread:2731469 [wandb_init.py:init():892] starting backend +2026-05-30 09:47:32,098 INFO MainThread:2731469 [wandb_init.py:init():895] sending inform_init request +2026-05-30 09:47:32,103 INFO MainThread:2731469 [wandb_init.py:init():903] backend started and connected +2026-05-30 09:47:32,104 INFO MainThread:2731469 [wandb_init.py:init():973] updated telemetry +2026-05-30 09:47:32,107 INFO MainThread:2731469 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 09:47:33,219 INFO MainThread:2731469 [wandb_init.py:init():1037] run resumed +2026-05-30 09:47:33,223 INFO MainThread:2731469 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 09:47:33,312 INFO MainThread:2731469 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 09:47:33,312 INFO MainThread:2731469 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 09:47:33,312 INFO MainThread:2731469 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 09:47:33,312 INFO MainThread:2731469 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 09:47:33,316 INFO MainThread:2731469 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 09:47:33,431 INFO MainThread:2731469 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 09:47:33,432 INFO MainThread:2731469 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 09:47:33,432 INFO MainThread:2731469 [wandb_run.py:_restore():2472] restore +2026-05-30 09:47:33,432 INFO MainThread:2731469 [wandb_run.py:_restore():2478] restore done +2026-05-30 09:47:33,627 INFO MainThread:2731469 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_094731-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_094731-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..ce52f704d35d957efab49e922a2bc4afada2b9c4 Binary files /dev/null and b/reward/wandb/run-20260530_094731-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_140620-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_140620-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b02e342306a45e26f178d853971599102d4b60d0 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + kdbqlc87pfa4827dfwy5t1uy0q9x8mlm: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=17 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625497964544" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T06:06:20.118971Z" + writerId: kdbqlc87pfa4827dfwy5t1uy0q9x8mlm + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 17 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_140620-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..f0d3a46254f2f1349ff3e089c9353153122f96a5 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 17 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5703 avg length: 126.11 diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_140620-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..c16a2a524ae4119adca5f360d9d349b4f6f1dbff --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T06:06:20.118971Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=17" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625497964544" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "kdbqlc87pfa4827dfwy5t1uy0q9x8mlm" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..9893747e33350ade48128c5980dfa82bc6763731 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/acc":0.396484375,"_wandb":{"runtime":14471},"_step":28,"_timestamp":1.7801027754513717e+09,"reward/train_step":1,"_runtime":14471,"reward/unbiased_bonus":0.09374999999999996,"train/loss":2.6498982906341553,"train/learning_rate":8.236931423909135e-07,"reward/avg_response_length":124.568359375,"reward/t_grpo_bonus":0.2718750000000003} \ No newline at end of file diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..41357e5855521f73c3778fc77794c6ee692f3ac2 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T14:06:20.183115304+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpi_3kt8h7/port-3190027.txt","pid":3190027,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T14:06:20.183655547+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3190027} +{"time":"2026-05-30T14:06:20.18361817+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3190027-3190190-2420569824/socket","Net":"unix"}} +{"time":"2026-05-30T14:06:20.364970105+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T14:06:20.375151007+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T14:06:20.77698137+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T14:06:21.187249055+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"70u9tf5hliry"} +{"time":"2026-05-30T14:06:21.368616282+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"70u9tf5hliry"} +{"time":"2026-05-30T14:06:21.369414395+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370058221+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370161068+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370172608+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370180635+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T14:06:21.370179882+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370255072+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3190027-3190190-2420569824/socket","Net":"unix"}} +{"time":"2026-05-30T14:06:21.370271191+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370283072+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T14:06:21.370296297+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..a58193cbbda52101b7bbcb55e28fe1315dfd1cd5 --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T14:06:20.375364145+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T14:06:20.774921564+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T14:06:20.77505547+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:20.775133526+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:20.776844104+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:20.776840356+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:20.776707255+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:20.778784289+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T14:06:20.976337875+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T14:06:21.18612904+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":17,"current":29} +{"time":"2026-05-30T14:06:21.312692131+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=940219a6702e987962031c95c5fa13e7fc51f4a4969bef409211702bfa966a04"} +{"time":"2026-05-30T14:06:21.31284697+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B442C86B7504BB29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=940219a6702e987962031c95c5fa13e7fc51f4a4969bef409211702bfa966a04, Size: 343}"} +{"time":"2026-05-30T14:06:21.31287172+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f27f1c381d05ec21741a8e5867d5a8cce627d464715d3c85d657cb4b60a7e5c6"} +{"time":"2026-05-30T14:06:21.312980126+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B442C86C1FBA2417e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f27f1c381d05ec21741a8e5867d5a8cce627d464715d3c85d657cb4b60a7e5c6, Size: 111}"} +{"time":"2026-05-30T14:06:21.313004426+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=df22f71663a4fc7619acae3ed07f861be3b0cf557401aeb2802b5d1cbf7e2414"} +{"time":"2026-05-30T14:06:21.312969606+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=62743c33ad115158ffb1ff2a75c30ac91e1d1d79256f188a817c477aeb9aefa4"} +{"time":"2026-05-30T14:06:21.315397101+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B442C86C86C94D4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=df22f71663a4fc7619acae3ed07f861be3b0cf557401aeb2802b5d1cbf7e2414, Size: 7996}"} +{"time":"2026-05-30T14:06:21.315443962+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e5ff64c3aaef37539b19f715332c4e2bd796fb03aff90c41b425a68e4ee8226a"} +{"time":"2026-05-30T14:06:21.315694999+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B442C86C93594B4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=62743c33ad115158ffb1ff2a75c30ac91e1d1d79256f188a817c477aeb9aefa4, Size: 2982}"} +{"time":"2026-05-30T14:06:21.316391023+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B442C86C3B11FB17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e5ff64c3aaef37539b19f715332c4e2bd796fb03aff90c41b425a68e4ee8226a, Size: 2850}"} +{"time":"2026-05-30T14:06:21.324213423+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5b5164b833a327430e305ba590d77ac1e4071653079668bd52a75cebe86489f5"} +{"time":"2026-05-30T14:06:21.324354369+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B442C86B957FE429678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T060621Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5b5164b833a327430e305ba590d77ac1e4071653079668bd52a75cebe86489f5, Size: 14790}"} +{"time":"2026-05-30T14:06:21.324658775+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T14:06:21.36428922+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T14:06:21.369454212+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:21.369484198+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:21.369572345+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T14:06:21.369593792+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..144ebd56985c3db15ff839c4657103fcf239023e --- /dev/null +++ b/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_setup.py:_flush():81] Configure stats pid to 3190027 +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug.log +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_140620-fmmkx1a5/logs/debug-internal.log +2026-05-30 14:06:20,121 INFO MainThread:3190027 [wandb_init.py:init():844] calling init triggers +2026-05-30 14:06:20,122 INFO MainThread:3190027 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 17, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 14:06:20,122 INFO MainThread:3190027 [wandb_init.py:init():892] starting backend +2026-05-30 14:06:20,365 INFO MainThread:3190027 [wandb_init.py:init():895] sending inform_init request +2026-05-30 14:06:20,371 INFO MainThread:3190027 [wandb_init.py:init():903] backend started and connected +2026-05-30 14:06:20,372 INFO MainThread:3190027 [wandb_init.py:init():973] updated telemetry +2026-05-30 14:06:20,377 INFO MainThread:3190027 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 14:06:20,970 INFO MainThread:3190027 [wandb_init.py:init():1037] run resumed +2026-05-30 14:06:20,974 INFO MainThread:3190027 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 14:06:21,063 INFO MainThread:3190027 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 14:06:21,063 INFO MainThread:3190027 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 14:06:21,063 INFO MainThread:3190027 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 14:06:21,063 INFO MainThread:3190027 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 14:06:21,067 INFO MainThread:3190027 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 14:06:21,186 INFO MainThread:3190027 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 14:06:21,186 INFO MainThread:3190027 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 14:06:21,186 INFO MainThread:3190027 [wandb_run.py:_restore():2472] restore +2026-05-30 14:06:21,186 INFO MainThread:3190027 [wandb_run.py:_restore():2478] restore done +2026-05-30 14:06:21,368 INFO MainThread:3190027 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_140620-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_140620-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..00277ffcc2bf54e24214e558814763ca1cc387f0 Binary files /dev/null and b/reward/wandb/run-20260530_140620-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_150423-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_150423-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2e5d7f580be1e1b759d03a6aeb308b380035bf81 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 05mcyircheumu6jrpsckyym94f04yrik: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=18 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625581428736" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T07:04:23.209512Z" + writerId: 05mcyircheumu6jrpsckyym94f04yrik + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 18 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_150423-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..a6ef871d5aebab6a8e40c538bb7ac1ce2b52fdfe --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 18 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5273 avg length: 125.13 diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_150423-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1e31995bcf5f6f958c12a52c2f1c4e6b7df67e08 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T07:04:23.209512Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=18" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625581428736" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "05mcyircheumu6jrpsckyym94f04yrik" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..1ecd1153688e8f5412c0fe27abd4ac27691fc2cc --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"train/learning_rate":8.236931423909135e-07,"_wandb":{"runtime":15120},"reward/t_grpo_bonus":0.2718750000000003,"train/loss":2.6498982906341553,"reward/avg_response_length":124.568359375,"reward/unbiased_bonus":0.09374999999999996,"_timestamp":1.7801027754513717e+09,"reward/acc":0.396484375,"_runtime":15120,"_step":28,"reward/train_step":1} \ No newline at end of file diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..e14ddfed177614b982fb3eaa9f80d88d2bf94d35 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T15:04:23.274771691+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp3nry8ign/port-3293688.txt","pid":3293688,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T15:04:23.276949202+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3293688} +{"time":"2026-05-30T15:04:23.276945612+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3293688-3293853-1970419989/socket","Net":"unix"}} +{"time":"2026-05-30T15:04:23.455669766+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T15:04:23.465266038+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T15:04:23.77360682+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T15:04:24.199139944+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"foqhjreh5nnp"} +{"time":"2026-05-30T15:04:24.402908054+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"foqhjreh5nnp"} +{"time":"2026-05-30T15:04:24.403750716+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T15:04:24.404214611+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T15:04:24.404374597+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T15:04:24.404398928+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T15:04:24.404416813+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T15:04:24.404420724+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T15:04:24.404513463+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3293688-3293853-1970419989/socket","Net":"unix"}} +{"time":"2026-05-30T15:04:24.4045579+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T15:04:24.40458041+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T15:04:24.40460437+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..ae9fc6d51147587b7a734a42da003faa92e953c9 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T15:04:23.465417184+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T15:04:23.773059387+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T15:04:23.773242647+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:23.773345464+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:23.77358277+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:23.773622591+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:23.773633336+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:23.778872793+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T15:04:23.986625206+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T15:04:24.198428175+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":18,"current":29} +{"time":"2026-05-30T15:04:24.33148027+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=68ef99708ed0241e9ad1291b9a4863800dc13d1b6fe4c57d334844af9a5bc6f9"} +{"time":"2026-05-30T15:04:24.331613457+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B445F3609865004b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=68ef99708ed0241e9ad1291b9a4863800dc13d1b6fe4c57d334844af9a5bc6f9, Size: 343}"} +{"time":"2026-05-30T15:04:24.332362241+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9313386c196f7f2381e002cfea2b628ebb94c07c7194b866f9dac5f21fcaa4d8"} +{"time":"2026-05-30T15:04:24.33247146+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B445F3609FDBAB4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9313386c196f7f2381e002cfea2b628ebb94c07c7194b866f9dac5f21fcaa4d8, Size: 2850}"} +{"time":"2026-05-30T15:04:24.332924049+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=da045e48f76e9f89ebd3bb46a4998a3210c0590e1ef1695826cc669223b5b9ef"} +{"time":"2026-05-30T15:04:24.33302992+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B445F3603F99D217e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=da045e48f76e9f89ebd3bb46a4998a3210c0590e1ef1695826cc669223b5b9ef, Size: 7996}"} +{"time":"2026-05-30T15:04:24.334185247+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cf77824f2f39d58d5205e817ae5bebd8eb09d58a8aa08272127f03a5d4ab5fb0"} +{"time":"2026-05-30T15:04:24.334271286+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B445F35F98441A29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cf77824f2f39d58d5205e817ae5bebd8eb09d58a8aa08272127f03a5d4ab5fb0, Size: 111}"} +{"time":"2026-05-30T15:04:24.334410223+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=496320bf137369893e2ad010f6a11510f0ee4fd9ff3517cfb8033569363330fa"} +{"time":"2026-05-30T15:04:24.334508344+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B445F360BC15D64b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=496320bf137369893e2ad010f6a11510f0ee4fd9ff3517cfb8033569363330fa, Size: 2982}"} +{"time":"2026-05-30T15:04:24.342985014+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=36167da83d17fb4c4142d17409674898fbe229f414b68adda4f3b0b6667cd522"} +{"time":"2026-05-30T15:04:24.34315608+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B445F36035BE2017e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T070424Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=36167da83d17fb4c4142d17409674898fbe229f414b68adda4f3b0b6667cd522, Size: 14790}"} +{"time":"2026-05-30T15:04:24.343697916+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T15:04:24.399989878+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T15:04:24.403769838+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:24.403784202+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:24.403828201+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T15:04:24.40384029+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..e626799caa7184b682fc607d828397cf5c3fb502 --- /dev/null +++ b/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_setup.py:_flush():81] Configure stats pid to 3293688 +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug.log +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_150423-fmmkx1a5/logs/debug-internal.log +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_init.py:init():844] calling init triggers +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 18, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 15:04:23,212 INFO MainThread:3293688 [wandb_init.py:init():892] starting backend +2026-05-30 15:04:23,456 INFO MainThread:3293688 [wandb_init.py:init():895] sending inform_init request +2026-05-30 15:04:23,461 INFO MainThread:3293688 [wandb_init.py:init():903] backend started and connected +2026-05-30 15:04:23,462 INFO MainThread:3293688 [wandb_init.py:init():973] updated telemetry +2026-05-30 15:04:23,465 INFO MainThread:3293688 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 15:04:23,980 INFO MainThread:3293688 [wandb_init.py:init():1037] run resumed +2026-05-30 15:04:23,985 INFO MainThread:3293688 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 15:04:24,073 INFO MainThread:3293688 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 15:04:24,074 INFO MainThread:3293688 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 15:04:24,074 INFO MainThread:3293688 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 15:04:24,074 INFO MainThread:3293688 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 15:04:24,077 INFO MainThread:3293688 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 15:04:24,198 INFO MainThread:3293688 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 15:04:24,198 INFO MainThread:3293688 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 15:04:24,198 INFO MainThread:3293688 [wandb_run.py:_restore():2472] restore +2026-05-30 15:04:24,199 INFO MainThread:3293688 [wandb_run.py:_restore():2478] restore done +2026-05-30 15:04:24,403 INFO MainThread:3293688 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_150423-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_150423-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..8e21fb5b1c5c2a225121f6287834af6037c540b9 Binary files /dev/null and b/reward/wandb/run-20260530_150423-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_161011-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_161011-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3902444db4922f7433dbf1dd1f2afb5af576ef34 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + fjbxu39z563nkzzw9ofi3oioolmnxoke: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=19 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625587679232" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T08:10:11.890374Z" + writerId: fjbxu39z563nkzzw9ofi3oioolmnxoke + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 19 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_161011-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..40bd356456a546faa7d49679ebe550cbecc8ba72 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 19 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4551 avg length: 125.24 diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_161011-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..0327c8ae6cda694a172f18bd862a7ae38a43e4a3 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T08:10:11.890374Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=19" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625587679232" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "fjbxu39z563nkzzw9ofi3oioolmnxoke" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..4f24a0b76fb196fa973d18f3c168e2a552faa58d --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/acc":0.396484375,"_timestamp":1.7801027754513717e+09,"train/loss":2.6498982906341553,"reward/train_step":1,"train/learning_rate":8.236931423909135e-07,"_step":28,"_wandb":{"runtime":16125},"reward/t_grpo_bonus":0.2718750000000003,"reward/avg_response_length":124.568359375,"reward/unbiased_bonus":0.09374999999999996,"_runtime":16125} \ No newline at end of file diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..83bb1beddf03a1f304b696c46160052360a68113 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T16:10:11.956626028+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp8hj79q9v/port-3412798.txt","pid":3412798,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T16:10:11.957256552+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3412798-3412954-3466209454/socket","Net":"unix"}} +{"time":"2026-05-30T16:10:11.957345167+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3412798} +{"time":"2026-05-30T16:10:12.137181634+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T16:10:12.146100049+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T16:10:12.454723434+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T16:10:12.930311706+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tsgd9dooxdpf"} +{"time":"2026-05-30T16:10:13.113683088+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tsgd9dooxdpf"} +{"time":"2026-05-30T16:10:13.114989657+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T16:10:13.115590028+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T16:10:13.115597125+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T16:10:13.115606833+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T16:10:13.11561588+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T16:10:13.115627284+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T16:10:13.115673841+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3412798-3412954-3466209454/socket","Net":"unix"}} +{"time":"2026-05-30T16:10:13.115774181+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T16:10:13.115791661+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T16:10:13.11581104+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..7bfe4b72b2c8272a306d061a5a43fe4d02e8c3ec --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T16:10:12.146329446+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T16:10:12.454231668+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T16:10:12.454423989+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:12.454499163+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:12.454705731+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:12.454738166+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:12.454744269+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:12.459221291+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T16:10:12.715556275+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T16:10:12.929354076+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":19,"current":29} +{"time":"2026-05-30T16:10:13.058809856+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9b8f87a076ca4fe317265430e7f0107a45e1d9cc97f6176153941d3f69eed4c9"} +{"time":"2026-05-30T16:10:13.058948862+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B4498AC43C275129678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9b8f87a076ca4fe317265430e7f0107a45e1d9cc97f6176153941d3f69eed4c9, Size: 343}"} +{"time":"2026-05-30T16:10:13.059215892+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5760df7e426fc1dd2c39816e965bbb648bca8299dfa381f40d93deedf5b0ee54"} +{"time":"2026-05-30T16:10:13.059350808+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B4498AC2FB23FC4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5760df7e426fc1dd2c39816e965bbb648bca8299dfa381f40d93deedf5b0ee54, Size: 2982}"} +{"time":"2026-05-30T16:10:13.060716619+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6bda022a48d1915e987950a11e64800064fcf603c206e1ed87c9b1df48e5620b"} +{"time":"2026-05-30T16:10:13.060856162+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B4498AC299F72E17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6bda022a48d1915e987950a11e64800064fcf603c206e1ed87c9b1df48e5620b, Size: 7996}"} +{"time":"2026-05-30T16:10:13.063976743+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c7792d18817343b61f86276b4bf4210bdaa762e4d256946bf557df045dc6013"} +{"time":"2026-05-30T16:10:13.06407764+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B4498AC3294F0E4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c7792d18817343b61f86276b4bf4210bdaa762e4d256946bf557df045dc6013, Size: 2850}"} +{"time":"2026-05-30T16:10:13.069183574+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=754f0cd40404fe2aa4b004a5561232db3010c6b2f0d1eb90f5a8160b25d38667"} +{"time":"2026-05-30T16:10:13.06924842+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B4498AC46462F329678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=754f0cd40404fe2aa4b004a5561232db3010c6b2f0d1eb90f5a8160b25d38667, Size: 14790}"} +{"time":"2026-05-30T16:10:13.069264962+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1704f56f82553988836618b8b821cd3a04991f2f3b243bd04453b25882ee39db"} +{"time":"2026-05-30T16:10:13.069376613+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B4498AC478BA5D29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T081013Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1704f56f82553988836618b8b821cd3a04991f2f3b243bd04453b25882ee39db, Size: 111}"} +{"time":"2026-05-30T16:10:13.070287353+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T16:10:13.110519607+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T16:10:13.115007479+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:13.115019865+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:13.115067725+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T16:10:13.115079359+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..3b4119fe768f00ac27661e50880d88a406b7a6f5 --- /dev/null +++ b/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 16:10:11,892 INFO MainThread:3412798 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_setup.py:_flush():81] Configure stats pid to 3412798 +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug.log +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_161011-fmmkx1a5/logs/debug-internal.log +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_init.py:init():844] calling init triggers +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 19, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 16:10:11,893 INFO MainThread:3412798 [wandb_init.py:init():892] starting backend +2026-05-30 16:10:12,137 INFO MainThread:3412798 [wandb_init.py:init():895] sending inform_init request +2026-05-30 16:10:12,142 INFO MainThread:3412798 [wandb_init.py:init():903] backend started and connected +2026-05-30 16:10:12,144 INFO MainThread:3412798 [wandb_init.py:init():973] updated telemetry +2026-05-30 16:10:12,147 INFO MainThread:3412798 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 16:10:12,710 INFO MainThread:3412798 [wandb_init.py:init():1037] run resumed +2026-05-30 16:10:12,714 INFO MainThread:3412798 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 16:10:12,802 INFO MainThread:3412798 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 16:10:12,802 INFO MainThread:3412798 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 16:10:12,802 INFO MainThread:3412798 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 16:10:12,802 INFO MainThread:3412798 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 16:10:12,806 INFO MainThread:3412798 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 16:10:12,929 INFO MainThread:3412798 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 16:10:12,929 INFO MainThread:3412798 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 16:10:12,929 INFO MainThread:3412798 [wandb_run.py:_restore():2472] restore +2026-05-30 16:10:12,929 INFO MainThread:3412798 [wandb_run.py:_restore():2478] restore done +2026-05-30 16:10:13,113 INFO MainThread:3412798 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_161011-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_161011-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..9adcfa2fb709e72ae4e5b40e629ecf4d6047c619 Binary files /dev/null and b/reward/wandb/run-20260530_161011-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_181659-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_181659-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bb23e69f3b388b3d59125f83d004cacc905670b3 --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + vcnnf6xuys2qyf9ujxlym6utljz0e64j: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=21 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625595760640" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T10:16:59.061423Z" + writerId: vcnnf6xuys2qyf9ujxlym6utljz0e64j + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 21 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_181659-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..d0df4dbdf72bbf4a2a31c4cd6caa16d48cd9392e --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 21 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.3711 avg length: 126.30 diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_181659-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4e3df5020d092c75acad468f79e0de2cef62c77d --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T10:16:59.061423Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=21" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625595760640" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "vcnnf6xuys2qyf9ujxlym6utljz0e64j" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..ed4b1fe4baeda14088165796fa611baa5797415e --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"train/loss":-0.3729729354381562,"reward/train_step":1,"reward/acc":0.396484375,"reward/avg_response_length":124.568359375,"_step":38,"_wandb":{"runtime":18034},"reward/unbiased_bonus":0.09374999999999996,"train/learning_rate":8.997213817017502e-07,"_runtime":18034,"reward/t_grpo_bonus":0.2718750000000003,"_timestamp":1.7801299761845806e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..9952b763a265f3701646f8c59880d9bfa8f91677 --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T18:16:59.125954785+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpjzp9n1_1/port-3654974.txt","pid":3654974,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T18:16:59.126545534+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3654974} +{"time":"2026-05-30T18:16:59.126493414+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3654974-3655137-2066590616/socket","Net":"unix"}} +{"time":"2026-05-30T18:16:59.307168387+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T18:16:59.316768208+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T18:16:59.619042785+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T18:17:00.101150025+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"yzfikbqx9htw"} +{"time":"2026-05-30T18:17:00.289716114+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"yzfikbqx9htw"} +{"time":"2026-05-30T18:17:00.290516376+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291235611+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291301447+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291345558+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291367226+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T18:17:00.291366491+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291472928+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3654974-3655137-2066590616/socket","Net":"unix"}} +{"time":"2026-05-30T18:17:00.291503699+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291535212+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T18:17:00.291567589+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..5733e630324d19a2606aae5d95a6cb75f8dbd0e7 --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T18:16:59.316898071+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T18:16:59.6167338+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T18:16:59.616927891+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T18:16:59.617004963+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T18:16:59.617226498+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T18:16:59.617280238+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T18:16:59.617281053+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T18:16:59.622270239+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T18:16:59.880653691+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T18:17:00.100187581+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":21,"current":39} +{"time":"2026-05-30T18:17:00.239223005+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9c77148662bdcb6a5321acc43eeab44574e07c938bc8cab69ecfccd3201bdc90"} +{"time":"2026-05-30T18:17:00.239389658+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B45075F22971344b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9c77148662bdcb6a5321acc43eeab44574e07c938bc8cab69ecfccd3201bdc90, Size: 2982}"} +{"time":"2026-05-30T18:17:00.239773503+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=270c164144f28fd7f50d032a56bc6597aca8005c11831063b6dfe39dfb7de5ec"} +{"time":"2026-05-30T18:17:00.239902357+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B45075F224CB374b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=270c164144f28fd7f50d032a56bc6597aca8005c11831063b6dfe39dfb7de5ec, Size: 111}"} +{"time":"2026-05-30T18:17:00.240601382+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ce176da73ce44e2bd926b62c1ebfed65026fbf9b7ddbc7917fa97820c02f8bf4"} +{"time":"2026-05-30T18:17:00.240715369+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7579e83fb2646ee7cc21f7cae0ad2ca781d33b8bc2ad14567075bb5d26af7cd9"} +{"time":"2026-05-30T18:17:00.240736527+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B45075F1B8689417e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ce176da73ce44e2bd926b62c1ebfed65026fbf9b7ddbc7917fa97820c02f8bf4, Size: 7996}"} +{"time":"2026-05-30T18:17:00.240822094+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B45075F367E1EC29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7579e83fb2646ee7cc21f7cae0ad2ca781d33b8bc2ad14567075bb5d26af7cd9, Size: 2850}"} +{"time":"2026-05-30T18:17:00.243731827+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=da8063d5b5042e932c1964835059b1dca55d879272e6e2a499fd3d5c7af1f194"} +{"time":"2026-05-30T18:17:00.243900368+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B45075F1CA27F217e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=da8063d5b5042e932c1964835059b1dca55d879272e6e2a499fd3d5c7af1f194, Size: 344}"} +{"time":"2026-05-30T18:17:00.244259653+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=140f3efbee842533bc1d2309a5b53c6e452a8a458cef59e07a37722ffed4e69a"} +{"time":"2026-05-30T18:17:00.24434367+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B45075F3523DC929678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T101700Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=140f3efbee842533bc1d2309a5b53c6e452a8a458cef59e07a37722ffed4e69a, Size: 14790}"} +{"time":"2026-05-30T18:17:00.245228319+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T18:17:00.286455892+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T18:17:00.290529423+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T18:17:00.290546012+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T18:17:00.290600232+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T18:17:00.290614907+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..3b490a2f94fffd210236677e8b5fce8c8c465f40 --- /dev/null +++ b/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_setup.py:_flush():81] Configure stats pid to 3654974 +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug.log +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_181659-fmmkx1a5/logs/debug-internal.log +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_init.py:init():844] calling init triggers +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 21, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 18:16:59,063 INFO MainThread:3654974 [wandb_init.py:init():892] starting backend +2026-05-30 18:16:59,307 INFO MainThread:3654974 [wandb_init.py:init():895] sending inform_init request +2026-05-30 18:16:59,312 INFO MainThread:3654974 [wandb_init.py:init():903] backend started and connected +2026-05-30 18:16:59,314 INFO MainThread:3654974 [wandb_init.py:init():973] updated telemetry +2026-05-30 18:16:59,317 INFO MainThread:3654974 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 18:16:59,874 INFO MainThread:3654974 [wandb_init.py:init():1037] run resumed +2026-05-30 18:16:59,878 INFO MainThread:3654974 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 18:16:59,968 INFO MainThread:3654974 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 18:16:59,968 INFO MainThread:3654974 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 18:16:59,968 INFO MainThread:3654974 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 18:16:59,968 INFO MainThread:3654974 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 18:16:59,971 INFO MainThread:3654974 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 18:17:00,100 INFO MainThread:3654974 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 18:17:00,100 INFO MainThread:3654974 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 18:17:00,100 INFO MainThread:3654974 [wandb_run.py:_restore():2472] restore +2026-05-30 18:17:00,100 INFO MainThread:3654974 [wandb_run.py:_restore():2478] restore done +2026-05-30 18:17:00,289 INFO MainThread:3654974 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_181659-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_181659-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..b81ff1422c0d7d335385c063afffaa1380205e42 Binary files /dev/null and b/reward/wandb/run-20260530_181659-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_192830-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_192830-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1b4c8277b5fb69a741b47db8d78fd4d6d7e77621 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + mrcwo0zqfrebu00tmykgciyxn3r0lssp: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=22 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625595719680" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T11:28:30.148048Z" + writerId: mrcwo0zqfrebu00tmykgciyxn3r0lssp + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 22 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_192830-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..0ec00251ec2a559b5b3a15e262e4a20af3ed5559 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 22 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4434 avg length: 126.28 diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_192830-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..7d792265f6bf874ddd7f5bd1a2eabc7bfe7a3766 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T11:28:30.148048Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=22" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625595719680" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "mrcwo0zqfrebu00tmykgciyxn3r0lssp" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..fde7b5d3709640b04c3c6b8b73ce9fd77cceb7a7 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/unbiased_bonus":0.09374999999999996,"reward/t_grpo_bonus":0.2718750000000003,"_step":38,"reward/acc":0.396484375,"reward/avg_response_length":124.568359375,"_wandb":{"runtime":19367},"_timestamp":1.7801299761845806e+09,"reward/train_step":1,"train/loss":-0.3729729354381562,"train/learning_rate":8.997213817017502e-07,"_runtime":19367} \ No newline at end of file diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..0a8d15a2e000edf6079744a223686c761641555b --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T19:28:30.212321462+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpbrxzafyd/port-3747859.txt","pid":3747859,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T19:28:30.212910161+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3747859} +{"time":"2026-05-30T19:28:30.212866705+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3747859-3747953-2930111190/socket","Net":"unix"}} +{"time":"2026-05-30T19:28:30.39373951+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T19:28:30.404404309+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T19:28:30.78678418+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T19:28:31.224750508+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"l304ij8blnea"} +{"time":"2026-05-30T19:28:31.406183889+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"l304ij8blnea"} +{"time":"2026-05-30T19:28:31.407143737+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T19:28:31.407662281+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408176687+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408221682+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408244536+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T19:28:31.408239151+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408314768+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408328503+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T19:28:31.408395308+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3747859-3747953-2930111190/socket","Net":"unix"}} +{"time":"2026-05-30T19:28:31.408444319+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..48ac0d12781d177ba6e11a0be2ae000b840dead8 --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T19:28:30.404588488+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T19:28:30.784727544+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T19:28:30.784914+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:30.78499726+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:30.78557804+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:30.786560605+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:30.786729419+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:30.790200746+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T19:28:30.996776566+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T19:28:31.223802352+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":22,"current":39} +{"time":"2026-05-30T19:28:31.354569234+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=371fc07105a5c4b4438239ac7db8162951f5d357397073762264abf60aa929e3"} +{"time":"2026-05-30T19:28:31.354700003+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B4545D0C6EA54B4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=371fc07105a5c4b4438239ac7db8162951f5d357397073762264abf60aa929e3, Size: 7996}"} +{"time":"2026-05-30T19:28:31.355649203+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4eeb44f194f3dc14529fbfc0db97e9029252a1d2308e11a2da190cc34c460f92"} +{"time":"2026-05-30T19:28:31.355760795+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B4545D0BFFB74517e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4eeb44f194f3dc14529fbfc0db97e9029252a1d2308e11a2da190cc34c460f92, Size: 2982}"} +{"time":"2026-05-30T19:28:31.355882301+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a5dda5f2186afddd194913f628389f3b10b9deb61b66a68de8c0cee7d0289dfe"} +{"time":"2026-05-30T19:28:31.356033607+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B4545D0DAD3E8C29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a5dda5f2186afddd194913f628389f3b10b9deb61b66a68de8c0cee7d0289dfe, Size: 344}"} +{"time":"2026-05-30T19:28:31.356074665+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=3d1d90766f72f52842932774bb0852ef11518eb05f46fe7208ebf8a22ca5ef70"} +{"time":"2026-05-30T19:28:31.356228933+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B4545D0C82418B4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=3d1d90766f72f52842932774bb0852ef11518eb05f46fe7208ebf8a22ca5ef70, Size: 111}"} +{"time":"2026-05-30T19:28:31.360082199+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=62cd77718685ee0bb3c5a6a005836f3b30664f0b76f01a161cd7bbb906439bb6"} +{"time":"2026-05-30T19:28:31.360263383+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B4545D0CABF0674b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=62cd77718685ee0bb3c5a6a005836f3b30664f0b76f01a161cd7bbb906439bb6, Size: 2850}"} +{"time":"2026-05-30T19:28:31.360569464+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2654a4f0820f637e022df70e2b69d937e38094f9be7341f2ce27931782c958a3"} +{"time":"2026-05-30T19:28:31.360689037+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B4545D0C0018ED17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T112831Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2654a4f0820f637e022df70e2b69d937e38094f9be7341f2ce27931782c958a3, Size: 14790}"} +{"time":"2026-05-30T19:28:31.361236227+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T19:28:31.402120524+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T19:28:31.407159017+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:31.407176995+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:31.40724706+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T19:28:31.407263995+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..398109305fd44f2dba057f7603e5e4770a5859cf --- /dev/null +++ b/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_setup.py:_flush():81] Configure stats pid to 3747859 +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug.log +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_192830-fmmkx1a5/logs/debug-internal.log +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_init.py:init():844] calling init triggers +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 22, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 19:28:30,150 INFO MainThread:3747859 [wandb_init.py:init():892] starting backend +2026-05-30 19:28:30,394 INFO MainThread:3747859 [wandb_init.py:init():895] sending inform_init request +2026-05-30 19:28:30,400 INFO MainThread:3747859 [wandb_init.py:init():903] backend started and connected +2026-05-30 19:28:30,401 INFO MainThread:3747859 [wandb_init.py:init():973] updated telemetry +2026-05-30 19:28:30,406 INFO MainThread:3747859 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 19:28:30,991 INFO MainThread:3747859 [wandb_init.py:init():1037] run resumed +2026-05-30 19:28:30,995 INFO MainThread:3747859 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 19:28:31,084 INFO MainThread:3747859 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 19:28:31,084 INFO MainThread:3747859 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 19:28:31,084 INFO MainThread:3747859 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 19:28:31,084 INFO MainThread:3747859 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 19:28:31,087 INFO MainThread:3747859 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 19:28:31,223 INFO MainThread:3747859 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 19:28:31,224 INFO MainThread:3747859 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 19:28:31,224 INFO MainThread:3747859 [wandb_run.py:_restore():2472] restore +2026-05-30 19:28:31,224 INFO MainThread:3747859 [wandb_run.py:_restore():2478] restore done +2026-05-30 19:28:31,406 INFO MainThread:3747859 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_192830-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_192830-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..8ffc766ad40b86ce0c54960ac1e4e8363c4828c0 Binary files /dev/null and b/reward/wandb/run-20260530_192830-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_212924-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_212924-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..be8b083c281d374460e4658c6968eab1af60cb38 --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 1qjs3tagx2ytglm665nd9a1d7ywq78e9: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=24 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625597681664" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T13:29:24.943978Z" + writerId: 1qjs3tagx2ytglm665nd9a1d7ywq78e9 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 24 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_212924-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..e756902c1b3bd86f2835a53ac5309a3d662efac9 --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 24 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4551 avg length: 124.63 diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_212924-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..bf6b22f205f7d4b2b1d5390185661da3f542e76f --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T13:29:24.943978Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=24" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625597681664" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "1qjs3tagx2ytglm665nd9a1d7ywq78e9" +} \ No newline at end of file diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..5f2681d70f42068b4e7aa352dbbdd5020cc09f61 --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_runtime":20949,"reward/unbiased_bonus":0.09374999999999996,"reward/train_step":1,"reward/t_grpo_bonus":0.2718750000000003,"_timestamp":1.7801299761845806e+09,"train/learning_rate":8.997213817017502e-07,"reward/avg_response_length":124.568359375,"_step":38,"train/loss":-0.3729729354381562,"reward/acc":0.396484375,"_wandb":{"runtime":20949}} \ No newline at end of file diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..0a9ec32af9da67950034a20c5b52ae62afacde6b --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-30T21:29:25.011122855+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmphqa80_y0/port-3842490.txt","pid":3842490,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-30T21:29:25.012117078+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":3842490} +{"time":"2026-05-30T21:29:25.012092403+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-3842490-3842583-3103138716/socket","Net":"unix"}} +{"time":"2026-05-30T21:29:25.190355799+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-30T21:29:25.199992166+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T21:29:25.505057367+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T21:29:25.973049598+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"9rmldg8z1fv3"} +{"time":"2026-05-30T21:29:26.156360245+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"9rmldg8z1fv3"} +{"time":"2026-05-30T21:29:26.158126937+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T21:29:26.158998856+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159012195+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159026063+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159037503+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159046981+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-30T21:29:26.159075971+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159167957+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-30T21:29:26.159204868+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-3842490-3842583-3103138716/socket","Net":"unix"}} +{"time":"2026-05-30T21:29:26.159256504+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..dbc8ba45aa876e6ff27af6eda4d114efd1884068 --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-30T21:29:25.20013664+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-30T21:29:25.502286598+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-30T21:29:25.502442236+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:25.502518299+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:25.504257404+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:25.504310046+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:25.504376897+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:25.506504284+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-30T21:29:25.761209483+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-30T21:29:25.972393002+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":24,"current":39} +{"time":"2026-05-30T21:29:26.103615864+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8c64e4b96f4a866c739e1e7194e9a2fad6bdbb01c8f0393e082d9d2a85b43cb3"} +{"time":"2026-05-30T21:29:26.103756035+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B45AF62D14C9184b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8c64e4b96f4a866c739e1e7194e9a2fad6bdbb01c8f0393e082d9d2a85b43cb3, Size: 344}"} +{"time":"2026-05-30T21:29:26.105265993+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=097a2e0b6eb92791aa1784d6f83ae8e31cc8e75eee4a57fbf813c97e2fb6e5a8"} +{"time":"2026-05-30T21:29:26.105376372+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B45AF62D1F43A34b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=097a2e0b6eb92791aa1784d6f83ae8e31cc8e75eee4a57fbf813c97e2fb6e5a8, Size: 7996}"} +{"time":"2026-05-30T21:29:26.106410548+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4d1980062574209bf826a91e755505237c636a379615d58782dd35abaf103415"} +{"time":"2026-05-30T21:29:26.106471834+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B45AF62E4F80A429678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4d1980062574209bf826a91e755505237c636a379615d58782dd35abaf103415, Size: 111}"} +{"time":"2026-05-30T21:29:26.107677187+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c785a46a8ac3d66085d99131ebeb895b4c6c5f1048d8f3f5cd1049d7061c5d46"} +{"time":"2026-05-30T21:29:26.107831597+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B45AF62D4988A74b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=c785a46a8ac3d66085d99131ebeb895b4c6c5f1048d8f3f5cd1049d7061c5d46, Size: 2982}"} +{"time":"2026-05-30T21:29:26.110085777+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8a7191d28ac83378b9693aab4a780dedaf37d08f72a6000700fa3d165af29164"} +{"time":"2026-05-30T21:29:26.110152147+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B45AF62E7A0E6129678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=8a7191d28ac83378b9693aab4a780dedaf37d08f72a6000700fa3d165af29164, Size: 2850}"} +{"time":"2026-05-30T21:29:26.112662192+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=79ba85edd08e4c5f494937e57e4dbd7515163f9e21b9a4efbf316974af4ccc58"} +{"time":"2026-05-30T21:29:26.112707059+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B45AF62C94410617e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T132926Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=79ba85edd08e4c5f494937e57e4dbd7515163f9e21b9a4efbf316974af4ccc58, Size: 14790}"} +{"time":"2026-05-30T21:29:26.113007763+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-30T21:29:26.154059989+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-30T21:29:26.158164866+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:26.158195366+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:26.158272738+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-30T21:29:26.158294857+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..13a571b73d24521671dc6e8d867ca40204c77a9b --- /dev/null +++ b/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-30 21:29:24,945 INFO MainThread:3842490 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_setup.py:_flush():81] Configure stats pid to 3842490 +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug.log +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260530_212924-fmmkx1a5/logs/debug-internal.log +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_init.py:init():844] calling init triggers +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 24, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-30 21:29:24,946 INFO MainThread:3842490 [wandb_init.py:init():892] starting backend +2026-05-30 21:29:25,190 INFO MainThread:3842490 [wandb_init.py:init():895] sending inform_init request +2026-05-30 21:29:25,195 INFO MainThread:3842490 [wandb_init.py:init():903] backend started and connected +2026-05-30 21:29:25,197 INFO MainThread:3842490 [wandb_init.py:init():973] updated telemetry +2026-05-30 21:29:25,200 INFO MainThread:3842490 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-30 21:29:25,756 INFO MainThread:3842490 [wandb_init.py:init():1037] run resumed +2026-05-30 21:29:25,759 INFO MainThread:3842490 [wandb_init.py:init():1042] starting run threads in backend +2026-05-30 21:29:25,848 INFO MainThread:3842490 [wandb_run.py:_console_start():2524] atexit reg +2026-05-30 21:29:25,848 INFO MainThread:3842490 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-30 21:29:25,848 INFO MainThread:3842490 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-30 21:29:25,848 INFO MainThread:3842490 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-30 21:29:25,851 INFO MainThread:3842490 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-30 21:29:25,972 INFO MainThread:3842490 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-30 21:29:25,972 INFO MainThread:3842490 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-30 21:29:25,972 INFO MainThread:3842490 [wandb_run.py:_restore():2472] restore +2026-05-30 21:29:25,973 INFO MainThread:3842490 [wandb_run.py:_restore():2478] restore done +2026-05-30 21:29:26,157 INFO MainThread:3842490 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260530_212924-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260530_212924-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..27a7851d0e4ed385f9eaf6d50bcbab8a97266851 Binary files /dev/null and b/reward/wandb/run-20260530_212924-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260530_212930-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260530_212930-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260530_212930-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260530_212930-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260530_212930-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d7dbbfa5ac731617ded5e3c26a3364f6772e3fc9 --- /dev/null +++ b/reward/wandb/run-20260530_212930-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 9dgv1rp4x4lnjncal8zb6qrbtgyu9kn0: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=24 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625597689856" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T13:29:30.741626Z" + writerId: 9dgv1rp4x4lnjncal8zb6qrbtgyu9kn0 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 24 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260530_212930-fmmkx1a5/files/output.log b/reward/wandb/run-20260530_212930-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..e756902c1b3bd86f2835a53ac5309a3d662efac9 --- /dev/null +++ b/reward/wandb/run-20260530_212930-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 24 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4551 avg length: 124.63 diff --git a/reward/wandb/run-20260530_212930-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260530_212930-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260530_212930-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260530_212930-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260530_212930-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..efcfa3fb9baee5fece8f44675d38127bdf8cc51f --- /dev/null +++ b/reward/wandb/run-20260530_212930-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/avg_response_length":124.568359375,"train/learning_rate":8.997213817017502e-07,"reward/t_grpo_bonus":0.2718750000000003,"reward/train_step":1,"_step":38,"_wandb":{"runtime":20949},"_runtime":20949,"reward/unbiased_bonus":0.09374999999999996,"reward/acc":0.396484375,"train/loss":-0.3729729354381562,"_timestamp":1.7801299761845806e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260531_024637-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..dd2a057b0e648bfbed623c722b58c11ca063e27a --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 4yqlevbdcw79f3w9ejwvegl8vwgmfr95: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=29 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625681076224" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T18:46:37.067852Z" + writerId: 4yqlevbdcw79f3w9ejwvegl8vwgmfr95 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 29 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/files/output.log b/reward/wandb/run-20260531_024637-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..407c97243c2812108ae2613836d1eba5898c0fd1 --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 29 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5078 avg length: 126.24 diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260531_024637-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..9a15809319c1b4a4172b2f7c83cc3644979d6f06 --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T18:46:37.067852Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=29" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625681076224" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "4yqlevbdcw79f3w9ejwvegl8vwgmfr95" +} \ No newline at end of file diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..fbbe1eb149950130601f091bae4cc036d4a32010 --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"_runtime":26101,"reward/t_grpo_bonus":0.2718750000000003,"train/learning_rate":8.997213817017502e-07,"train/loss":-0.3729729354381562,"reward/acc":0.396484375,"_step":38,"_wandb":{"runtime":26101},"reward/avg_response_length":124.568359375,"reward/train_step":1,"reward/unbiased_bonus":0.09374999999999996,"_timestamp":1.7801299761845806e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..f7629bd6a1149b9ab6e36addc9509a481d57db4e --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-31T02:46:37.132998941+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpvynro5o2/port-4095068.txt","pid":4095068,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-31T02:46:37.133630439+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":4095068} +{"time":"2026-05-31T02:46:37.133618899+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-4095068-4095156-2393756756/socket","Net":"unix"}} +{"time":"2026-05-31T02:46:37.314619742+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-31T02:46:37.324202468+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T02:46:37.628071286+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T02:46:38.098607732+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"vc6x5iv8nnv0"} +{"time":"2026-05-31T02:46:38.280826621+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"vc6x5iv8nnv0"} +{"time":"2026-05-31T02:46:38.282217859+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T02:46:38.282908651+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T02:46:38.282919784+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-31T02:46:38.282933066+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-31T02:46:38.282943988+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-31T02:46:38.282950273+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-31T02:46:38.283016797+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-4095068-4095156-2393756756/socket","Net":"unix"}} +{"time":"2026-05-31T02:46:38.283062762+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-31T02:46:38.283076199+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-31T02:46:38.283093844+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..6218c394b1ae71a480237c403e5c24836fe35202 --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-31T02:46:37.324304238+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-31T02:46:37.627541346+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-31T02:46:37.627723829+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:37.627797643+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:37.628053189+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:37.628093425+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:37.628101006+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:37.634051879+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-31T02:46:37.889926005+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-31T02:46:38.097829999+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":29,"current":39} +{"time":"2026-05-31T02:46:38.229484038+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=deae39c1dba658de3737da969e622c35480e3e10cf47671e565049009a2d30f4"} +{"time":"2026-05-31T02:46:38.229619328+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B46C4570BCEF8D29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=deae39c1dba658de3737da969e622c35480e3e10cf47671e565049009a2d30f4, Size: 344}"} +{"time":"2026-05-31T02:46:38.229935274+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4444f633db11bbb2831429fdadd9a69797dd6893ec0334fe0284e527de4555d0"} +{"time":"2026-05-31T02:46:38.230059242+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B46C4571610B8A17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4444f633db11bbb2831429fdadd9a69797dd6893ec0334fe0284e527de4555d0, Size: 2850}"} +{"time":"2026-05-31T02:46:38.231313404+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=3e769a82cf1ae4210b4d4c79db2a0e57883c538e114dc25a758d41495a662477"} +{"time":"2026-05-31T02:46:38.23142287+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B46C4570D6D94F29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=3e769a82cf1ae4210b4d4c79db2a0e57883c538e114dc25a758d41495a662477, Size: 2982}"} +{"time":"2026-05-31T02:46:38.231614369+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=73dcb5fd5d29f3bca255dca41db0863001b2024ccf77aeb302eba8936cd03fe1"} +{"time":"2026-05-31T02:46:38.231711722+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B46C45715F28E517e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=73dcb5fd5d29f3bca255dca41db0863001b2024ccf77aeb302eba8936cd03fe1, Size: 111}"} +{"time":"2026-05-31T02:46:38.231780327+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=fd1bd0431314f68d35b11a5e6f5a4a83fe203ce34f1363220128a43a7f38c7e8"} +{"time":"2026-05-31T02:46:38.231881348+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B46C45715E8D3917e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=fd1bd0431314f68d35b11a5e6f5a4a83fe203ce34f1363220128a43a7f38c7e8, Size: 7996}"} +{"time":"2026-05-31T02:46:38.236832453+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e30cf3babd65cae21a645d4a6979fb93293c669af412aa11920531eaf961f101"} +{"time":"2026-05-31T02:46:38.236873647+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B46C45715E264417e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T184638Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e30cf3babd65cae21a645d4a6979fb93293c669af412aa11920531eaf961f101, Size: 14790}"} +{"time":"2026-05-31T02:46:38.237198174+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-31T02:46:38.277275318+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-31T02:46:38.282242139+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:38.282259346+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:38.282324606+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T02:46:38.282340064+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..96c89929cdb6566aeeb7a0543538c9b357e2586c --- /dev/null +++ b/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_setup.py:_flush():81] Configure stats pid to 4095068 +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug.log +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260531_024637-fmmkx1a5/logs/debug-internal.log +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_init.py:init():844] calling init triggers +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 29, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-31 02:46:37,070 INFO MainThread:4095068 [wandb_init.py:init():892] starting backend +2026-05-31 02:46:37,315 INFO MainThread:4095068 [wandb_init.py:init():895] sending inform_init request +2026-05-31 02:46:37,320 INFO MainThread:4095068 [wandb_init.py:init():903] backend started and connected +2026-05-31 02:46:37,321 INFO MainThread:4095068 [wandb_init.py:init():973] updated telemetry +2026-05-31 02:46:37,324 INFO MainThread:4095068 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-31 02:46:37,884 INFO MainThread:4095068 [wandb_init.py:init():1037] run resumed +2026-05-31 02:46:37,887 INFO MainThread:4095068 [wandb_init.py:init():1042] starting run threads in backend +2026-05-31 02:46:37,977 INFO MainThread:4095068 [wandb_run.py:_console_start():2524] atexit reg +2026-05-31 02:46:37,977 INFO MainThread:4095068 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-31 02:46:37,977 INFO MainThread:4095068 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-31 02:46:37,977 INFO MainThread:4095068 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-31 02:46:37,980 INFO MainThread:4095068 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-31 02:46:38,097 INFO MainThread:4095068 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-31 02:46:38,098 INFO MainThread:4095068 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-31 02:46:38,098 INFO MainThread:4095068 [wandb_run.py:_restore():2472] restore +2026-05-31 02:46:38,098 INFO MainThread:4095068 [wandb_run.py:_restore():2478] restore done +2026-05-31 02:46:38,281 INFO MainThread:4095068 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260531_024637-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260531_024637-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..cece21790679a22006dcd29efefb519de9ee2c9c Binary files /dev/null and b/reward/wandb/run-20260531_024637-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260531_024642-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260531_024642-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260531_024642-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260531_024642-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260531_024642-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..155978996901379e2779d30088d21cecd536ebcf --- /dev/null +++ b/reward/wandb/run-20260531_024642-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 1dfbwhfafyn03tbi4sjmsa5vqry4pazl: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=29 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625681084416" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T18:46:42.854913Z" + writerId: 1dfbwhfafyn03tbi4sjmsa5vqry4pazl + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 29 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260531_024642-fmmkx1a5/files/output.log b/reward/wandb/run-20260531_024642-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..407c97243c2812108ae2613836d1eba5898c0fd1 --- /dev/null +++ b/reward/wandb/run-20260531_024642-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 29 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.5078 avg length: 126.24 diff --git a/reward/wandb/run-20260531_024642-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260531_024642-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260531_024642-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260531_034808-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/config.yaml b/reward/wandb/run-20260531_034808-fmmkx1a5/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ce6b880afb8f571928d0ecc69318bd42d40af24d --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/config.yaml @@ -0,0 +1,281 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + v7hruwldf4qytspjwowi23ou2zsysjym: + args: + - config=../configs/rl_lavida_video_reversal.yaml + - wandb.run_id=fmmkx1a5 + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=30 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "625682087936" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-05-30T19:48:08.194832Z" + writerId: v7hruwldf4qytspjwowi23ou2zsysjym + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_video_reversal.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_rl_train +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 30 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_video_reversal/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_video_reversal +experiment.save_every: + value: 10 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 30 +lr_scheduler.params.learning_rate: + value: 1e-06 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 1e-06 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.01 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: fmmkx1a5 diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/output.log b/reward/wandb/run-20260531_034808-fmmkx1a5/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..2fcd26171567bf23c26d6dc0a55d2ddc84a870a3 --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 30 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.4473 avg length: 125.82 diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/requirements.txt b/reward/wandb/run-20260531_034808-fmmkx1a5/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-metadata.json b/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1b3f48f531df21912e67048633d92d5d0e79a6d4 --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-05-30T19:48:08.194832Z", + "args": [ + "config=../configs/rl_lavida_video_reversal.yaml", + "wandb.run_id=fmmkx1a5", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=30" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "625682087936" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "v7hruwldf4qytspjwowi23ou2zsysjym" +} \ No newline at end of file diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-summary.json b/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..2706cba34ba14a33b54678f22c3e85be682f5736 --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-summary.json @@ -0,0 +1 @@ +{"train/loss":-0.3729729354381562,"train/learning_rate":8.997213817017502e-07,"reward/unbiased_bonus":0.09374999999999996,"reward/acc":0.396484375,"reward/avg_response_length":124.568359375,"_wandb":{"runtime":27035},"reward/t_grpo_bonus":0.2718750000000003,"reward/train_step":1,"_step":38,"_runtime":27035,"_timestamp":1.7801299761845806e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-core.log b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..f00c69da8c3b6a10c1812d86b2baa830050a4fec --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-05-31T03:48:08.258698954+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpkm826bvi/port-4145072.txt","pid":4145072,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-05-31T03:48:08.259431174+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":4145072} +{"time":"2026-05-31T03:48:08.259354876+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-4145072-4145167-912255097/socket","Net":"unix"}} +{"time":"2026-05-31T03:48:08.440316209+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-05-31T03:48:08.449273484+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T03:48:08.751644161+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T03:48:09.165504305+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"rgxbfkdpq3yt"} +{"time":"2026-05-31T03:48:09.341314355+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"rgxbfkdpq3yt"} +{"time":"2026-05-31T03:48:09.342090373+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342655486+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"fmmkx1a5","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342662738+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342672705+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342680737+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342695607+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-05-31T03:48:09.342712498+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342789658+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-05-31T03:48:09.342876295+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-4145072-4145167-912255097/socket","Net":"unix"}} +{"time":"2026-05-31T03:48:09.342932001+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-internal.log b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..fc01d32f31a28d18a34d0f470d65afb41f8ce0c7 --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-05-31T03:48:08.449458285+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-05-31T03:48:08.751013467+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-05-31T03:48:08.751155078+08:00","level":"INFO","msg":"stream: created new stream","id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:08.751422965+08:00","level":"INFO","msg":"handler: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:08.751628654+08:00","level":"INFO","msg":"stream: started","id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:08.751647024+08:00","level":"INFO","msg":"writer: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:08.751663424+08:00","level":"INFO","msg":"sender: started","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:08.755751161+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-05-31T03:48:08.957593953+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-05-31T03:48:09.164805677+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":30,"current":39} +{"time":"2026-05-31T03:48:09.292578116+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=108e4c77cdfb92c227c9ab11a4613970263092fd5cf2c84de7a3f7469577be56"} +{"time":"2026-05-31T03:48:09.293345157+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7e7e2861f2f91eb4ee2d31e2aa924fecf1d69eb488aafa82b6ef7e7c96417fa7"} +{"time":"2026-05-31T03:48:09.294366436+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log18B46FA0D5BD180D17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=108e4c77cdfb92c227c9ab11a4613970263092fd5cf2c84de7a3f7469577be56, Size: 111}"} +{"time":"2026-05-31T03:48:09.2938455+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cf8ebe29aacc5012e5c7623297d2aa8526eec0844ab989c53023e95423444cdd"} +{"time":"2026-05-31T03:48:09.294390976+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml18B46FA0D5BDA57E17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7e7e2861f2f91eb4ee2d31e2aa924fecf1d69eb488aafa82b6ef7e7c96417fa7, Size: 7996}"} +{"time":"2026-05-31T03:48:09.294524677+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2dfcfb85058959a3e8e2ce09ce7d551078155352322a793311e62c02935984d9"} +{"time":"2026-05-31T03:48:09.294516584+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt18B46FA0D6050E1D4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=cf8ebe29aacc5012e5c7623297d2aa8526eec0844ab989c53023e95423444cdd, Size: 2982}"} +{"time":"2026-05-31T03:48:09.294689145+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json18B46FA0D6068B304b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2dfcfb85058959a3e8e2ce09ce7d551078155352322a793311e62c02935984d9, Size: 344}"} +{"time":"2026-05-31T03:48:09.297719038+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6bb3c77c1d8c69c4a3de69d3f965a1faebd012787e01d87a14cc47e423903115"} +{"time":"2026-05-31T03:48:09.297808493+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json18B46FA0D579FB5429678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6bb3c77c1d8c69c4a3de69d3f965a1faebd012787e01d87a14cc47e423903115, Size: 2850}"} +{"time":"2026-05-31T03:48:09.298052675+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6de3165fa3a8260c958e5bdf5cdb6677315f97d7f4ee0fb69ba70b5cb05affab"} +{"time":"2026-05-31T03:48:09.298202806+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py18B46FA0D5A4401D17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_video_reversal/fmmkx1a5/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260530%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260530T194809Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=6de3165fa3a8260c958e5bdf5cdb6677315f97d7f4ee0fb69ba70b5cb05affab, Size: 14790}"} +{"time":"2026-05-31T03:48:09.298957002+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-05-31T03:48:09.337418498+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-05-31T03:48:09.342103758+08:00","level":"INFO","msg":"stream: closing","id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:09.342115448+08:00","level":"INFO","msg":"handler: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:09.342163188+08:00","level":"INFO","msg":"sender: closed","stream_id":"fmmkx1a5"} +{"time":"2026-05-31T03:48:09.342174826+08:00","level":"INFO","msg":"stream: closed","id":"fmmkx1a5"} diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug.log b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..37043806385f6ca096bc3928d4f202efaa9cd62a --- /dev/null +++ b/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug.log @@ -0,0 +1,25 @@ +2026-05-31 03:48:08,196 INFO MainThread:4145072 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-05-31 03:48:08,196 INFO MainThread:4145072 [wandb_setup.py:_flush():81] Configure stats pid to 4145072 +2026-05-31 03:48:08,196 INFO MainThread:4145072 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-05-31 03:48:08,196 INFO MainThread:4145072 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug.log +2026-05-31 03:48:08,197 INFO MainThread:4145072 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260531_034808-fmmkx1a5/logs/debug-internal.log +2026-05-31 03:48:08,197 INFO MainThread:4145072 [wandb_init.py:init():844] calling init triggers +2026-05-31 03:48:08,197 INFO MainThread:4145072 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'fmmkx1a5', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_video_reversal', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 30, 'experiment.save_every': 10, 'experiment.eval_every': 5, 'experiment.current_epoch': 30, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/dLLM-RL/sft_lavida_video_reversal/ckpt/optimized', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_rl_train', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.01, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 1e-06, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 1e-06, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_video_reversal.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-05-31 03:48:08,197 INFO MainThread:4145072 [wandb_init.py:init():892] starting backend +2026-05-31 03:48:08,440 INFO MainThread:4145072 [wandb_init.py:init():895] sending inform_init request +2026-05-31 03:48:08,446 INFO MainThread:4145072 [wandb_init.py:init():903] backend started and connected +2026-05-31 03:48:08,447 INFO MainThread:4145072 [wandb_init.py:init():973] updated telemetry +2026-05-31 03:48:08,450 INFO MainThread:4145072 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-05-31 03:48:08,951 INFO MainThread:4145072 [wandb_init.py:init():1037] run resumed +2026-05-31 03:48:08,955 INFO MainThread:4145072 [wandb_init.py:init():1042] starting run threads in backend +2026-05-31 03:48:09,044 INFO MainThread:4145072 [wandb_run.py:_console_start():2524] atexit reg +2026-05-31 03:48:09,044 INFO MainThread:4145072 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-05-31 03:48:09,045 INFO MainThread:4145072 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-05-31 03:48:09,045 INFO MainThread:4145072 [wandb_run.py:_redirect():2465] Redirects installed. +2026-05-31 03:48:09,048 INFO MainThread:4145072 [wandb_init.py:init():1082] run started, returning control to user process +2026-05-31 03:48:09,164 INFO MainThread:4145072 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_video_reversal/fmmkx1a5 +2026-05-31 03:48:09,165 INFO MainThread:4145072 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-05-31 03:48:09,165 INFO MainThread:4145072 [wandb_run.py:_restore():2472] restore +2026-05-31 03:48:09,165 INFO MainThread:4145072 [wandb_run.py:_restore():2478] restore done +2026-05-31 03:48:09,341 INFO MainThread:4145072 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260531_034808-fmmkx1a5/run-fmmkx1a5.wandb b/reward/wandb/run-20260531_034808-fmmkx1a5/run-fmmkx1a5.wandb new file mode 100644 index 0000000000000000000000000000000000000000..133f41b995e426166e559a11ae4900109416c6ce Binary files /dev/null and b/reward/wandb/run-20260531_034808-fmmkx1a5/run-fmmkx1a5.wandb differ diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_125331-tnrnzimf/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/config.yaml b/reward/wandb/run-20260602_125331-tnrnzimf/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd4b79dff688e7ade1c09f52ff8f908396257dbb --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/config.yaml @@ -0,0 +1,221 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 7qfo6aa726775ttcf04asmzbb23vhwq5: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu.yaml + - wandb.run_id=tnrnzimf + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=1 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T04:53:31.559267Z" + writerId: 7qfo6aa726775ttcf04asmzbb23vhwq5 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 13 + - 14 + - 16 + - 61 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 32 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 32 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.steps: + value: 32 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 1 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: true +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 32 +rollout.max_gen_length: + value: 32 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 32 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 32 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: tnrnzimf diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/output.log b/reward/wandb/run-20260602_125331-tnrnzimf/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..815b7cba3b96c5f746b9aa3491f516679c04860e --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 1 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0000 avg length: 31.04 diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/requirements.txt b/reward/wandb/run-20260602_125331-tnrnzimf/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-metadata.json b/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..2f9f4e8b2def738d0dbd7e754baba7447a65a3c2 --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T04:53:31.559267Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu.yaml", + "wandb.run_id=tnrnzimf", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=1" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "7qfo6aa726775ttcf04asmzbb23vhwq5" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-summary.json b/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..b47ba8942984ba05f54de889f2e6bc26e82b09be --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-summary.json @@ -0,0 +1 @@ +{"_wandb":{"runtime":0},"_timestamp":1.780376012474483e+09,"reward/unbiased_bonus":0,"_runtime":0.197048589,"reward/train_step":1,"_step":1,"reward/acc":0,"reward/t_grpo_bonus":0.3000000000000004,"reward/avg_response_length":31.0400390625} \ No newline at end of file diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-core.log b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..cd0321896b84c1a4251f380f9a3129165a283ca9 --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T12:53:31.62436339+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpof2f6sf2/port-672437.txt","pid":672437,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T12:53:31.625347755+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":672437} +{"time":"2026-06-02T12:53:31.625335632+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-672437-672620-2059697951/socket","Net":"unix"}} +{"time":"2026-06-02T12:53:31.805939679+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T12:53:31.815117865+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"tnrnzimf","id":"1(@)"} +{"time":"2026-06-02T12:53:32.121611547+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"tnrnzimf","id":"1(@)"} +{"time":"2026-06-02T12:53:32.475974164+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"zh7q5061fisv"} +{"time":"2026-06-02T12:53:32.684070415+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"zh7q5061fisv"} +{"time":"2026-06-02T12:53:32.685329095+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"tnrnzimf","id":"1(@)"} +{"time":"2026-06-02T12:53:32.685992837+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"tnrnzimf","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686091434+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686102397+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686108849+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T12:53:32.68610995+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686171979+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-672437-672620-2059697951/socket","Net":"unix"}} +{"time":"2026-06-02T12:53:32.686219661+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686235165+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T12:53:32.686252309+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-internal.log b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..fcf9fa63ca846d1d8674b1c830fa3ee5b79c8410 --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-internal.log @@ -0,0 +1,27 @@ +{"time":"2026-06-02T12:53:31.816516897+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T12:53:32.119804396+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T12:53:32.119969302+08:00","level":"INFO","msg":"stream: created new stream","id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.120058971+08:00","level":"INFO","msg":"handler: started","stream_id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.120238839+08:00","level":"INFO","msg":"stream: started","id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.120248547+08:00","level":"INFO","msg":"writer: started","stream_id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.120255801+08:00","level":"INFO","msg":"sender: started","stream_id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.123223474+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T12:53:32.279914189+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T12:53:32.614363897+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=327ee9841bc72080c269fc646467fe29c0fc143689d60df0e6cda0166cd2c67b"} +{"time":"2026-06-02T12:53:32.614469416+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/requirements.txt18B52A8CF4B4FF9829678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=327ee9841bc72080c269fc646467fe29c0fc143689d60df0e6cda0166cd2c67b, Size: 2982}"} +{"time":"2026-06-02T12:53:32.614735316+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=282a36c01112c58b88b73ddbf666e73e67ee939df8296e802d0e225793609e18"} +{"time":"2026-06-02T12:53:32.614799913+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/config.yaml18B52A8CF56F860917e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=282a36c01112c58b88b73ddbf666e73e67ee939df8296e802d0e225793609e18, Size: 5443}"} +{"time":"2026-06-02T12:53:32.617654487+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=366dcfc2dd4d56810c0baa6932d8ebecc5071a1325fb6dffd98a3e54b6d8b13b"} +{"time":"2026-06-02T12:53:32.617812434+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-summary.json18B52A8CF4C9AAEC29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=366dcfc2dd4d56810c0baa6932d8ebecc5071a1325fb6dffd98a3e54b6d8b13b, Size: 239}"} +{"time":"2026-06-02T12:53:32.618806523+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5a6750ef11799bb169680a857da55e6f759915d0294b2ecc79970a52f8976211"} +{"time":"2026-06-02T12:53:32.618882318+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-metadata.json18B52A8CF60629C24b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5a6750ef11799bb169680a857da55e6f759915d0294b2ecc79970a52f8976211, Size: 982}"} +{"time":"2026-06-02T12:53:32.619006251+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=181196656ce070b8b71c4f8fe36138a7917f210c680a186db3cc51e30a4793a4"} +{"time":"2026-06-02T12:53:32.619089167+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/output.log18B52A8CF60AC3484b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=181196656ce070b8b71c4f8fe36138a7917f210c680a186db3cc51e30a4793a4, Size: 109}"} +{"time":"2026-06-02T12:53:32.629905524+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=860aa13822034d29829a10ed5b61fd98087386f0d20cbbea4a0a772357cf4441"} +{"time":"2026-06-02T12:53:32.630003951+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/code/reward/rl_reward_video_reversal.py18B52A8CF5065D9729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T045332Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=860aa13822034d29829a10ed5b61fd98087386f0d20cbbea4a0a772357cf4441, Size: 14790}"} +{"time":"2026-06-02T12:53:32.63082394+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T12:53:32.681006884+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T12:53:32.685372049+08:00","level":"INFO","msg":"stream: closing","id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.68539967+08:00","level":"INFO","msg":"handler: closed","stream_id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.68548187+08:00","level":"INFO","msg":"sender: closed","stream_id":"tnrnzimf"} +{"time":"2026-06-02T12:53:32.685509765+08:00","level":"INFO","msg":"stream: closed","id":"tnrnzimf"} diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug.log b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..f35a3bf610e657fe63b3b9a80dcf78419f37976b --- /dev/null +++ b/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug.log @@ -0,0 +1,24 @@ +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_setup.py:_flush():81] Configure stats pid to 672437 +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug.log +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_125331-tnrnzimf/logs/debug-internal.log +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_init.py:init():844] calling init triggers +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'tnrnzimf', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 1, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 32, 'rollout.max_gen_length': 32, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 32, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': True, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 32, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 32, 'evaluation.max_gen_length': 32, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 32, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 12:53:31,561 INFO MainThread:672437 [wandb_init.py:init():892] starting backend +2026-06-02 12:53:31,806 INFO MainThread:672437 [wandb_init.py:init():895] sending inform_init request +2026-06-02 12:53:31,811 INFO MainThread:672437 [wandb_init.py:init():903] backend started and connected +2026-06-02 12:53:31,813 INFO MainThread:672437 [wandb_init.py:init():973] updated telemetry +2026-06-02 12:53:31,819 INFO MainThread:672437 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 12:53:32,277 INFO MainThread:672437 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 12:53:32,369 INFO MainThread:672437 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 12:53:32,369 INFO MainThread:672437 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 12:53:32,369 INFO MainThread:672437 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 12:53:32,369 INFO MainThread:672437 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 12:53:32,372 INFO MainThread:672437 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 12:53:32,474 INFO MainThread:672437 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu/tnrnzimf +2026-06-02 12:53:32,475 INFO MainThread:672437 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 12:53:32,475 INFO MainThread:672437 [wandb_run.py:_restore():2472] restore +2026-06-02 12:53:32,475 INFO MainThread:672437 [wandb_run.py:_restore():2478] restore done +2026-06-02 12:53:32,684 INFO MainThread:672437 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_125331-tnrnzimf/run-tnrnzimf.wandb b/reward/wandb/run-20260602_125331-tnrnzimf/run-tnrnzimf.wandb new file mode 100644 index 0000000000000000000000000000000000000000..4159679673c3ee98fe33f673fadc6050f48053bd Binary files /dev/null and b/reward/wandb/run-20260602_125331-tnrnzimf/run-tnrnzimf.wandb differ diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_132346-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_132346-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..eeb60fff134976cbd67c9057169df8ef097e52de --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/config.yaml @@ -0,0 +1,273 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + opoc8pacrikbldab9zukwzhchj2y97sa: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=1 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + cpu_count: 96 + cpu_count_logical: 192 + cudaVersion: "12.8" + disk: + /: + total: "806578724864" + used: "626439544832" + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + gpu: NVIDIA H800 + gpu_count: 8 + gpu_nvidia: + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f768b684-b9ce-23a2-81a6-af16161cf9be + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-f531028f-805c-3301-61b3-0c46329dc9c0 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-2775489f-18c8-2328-8829-c46238575379 + - architecture: Hopper + cudaCores: 16896 + memoryTotal: "85520809984" + name: NVIDIA H800 + uuid: GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd + host: b1301b38c75f + memory: + total: "2164113764352" + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T05:23:46.193219Z" + writerId: opoc8pacrikbldab9zukwzhchj2y97sa + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 13 + - 14 + - 16 + - 61 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 1 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_132346-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..06e016c4f89f2b2ff353cdfe26c2a321741aac86 --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 1 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0273 avg length: 35.73 diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_132346-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..0a48873b80aa4ac0093d37da4c5dfe9be4ee5b34 --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,98 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T05:23:46.193219Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=1" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "cpu_count": 96, + "cpu_count_logical": 192, + "gpu": "NVIDIA H800", + "gpu_count": 8, + "disk": { + "/": { + "total": "806578724864", + "used": "626439544832" + } + }, + "memory": { + "total": "2164113764352" + }, + "gpu_nvidia": [ + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f768b684-b9ce-23a2-81a6-af16161cf9be" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2f1e1a7b-76a2-e00b-3dc5-79add059b8f9" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-33d7b8d4-af9c-4719-9686-1712e9694cd6" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-0b797f66-23ec-d0ff-1c65-fb34b9064e53" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-ad9e9c73-0f31-a8b3-e8f7-7be19f5338ad" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-f531028f-805c-3301-61b3-0c46329dc9c0" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-2775489f-18c8-2328-8829-c46238575379" + }, + { + "name": "NVIDIA H800", + "memoryTotal": "85520809984", + "cudaCores": 16896, + "architecture": "Hopper", + "uuid": "GPU-1dd27781-c1f3-d980-6f18-fe8a778b69fd" + } + ], + "cudaVersion": "12.8", + "writerId": "opoc8pacrikbldab9zukwzhchj2y97sa" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..4318a18eace49b74dc1ca0bd7ee01a773b5b4226 --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"_timestamp":1.780377827197942e+09,"_runtime":0.295091817,"reward/unbiased_bonus":0,"reward/avg_response_length":35.7275390625,"_step":1,"reward/t_grpo_bonus":0.29531250000000037,"_wandb":{"runtime":0},"reward/acc":0.02734375,"reward/train_step":1} \ No newline at end of file diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..b4fa33b36549c4c4fcfb9869d5b765da2bf925d9 --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T13:23:46.260506949+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpnd6iju74/port-748927.txt","pid":748927,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T13:23:46.261054341+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":748927} +{"time":"2026-06-02T13:23:46.261032544+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-748927-749116-2025117688/socket","Net":"unix"}} +{"time":"2026-06-02T13:23:46.441877706+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T13:23:46.451990015+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T13:23:46.752172791+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T13:23:47.199639478+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"6453kv8patij"} +{"time":"2026-06-02T13:23:47.422237186+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"6453kv8patij"} +{"time":"2026-06-02T13:23:47.422944587+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T13:23:47.423732807+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T13:23:47.423903496+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T13:23:47.423920592+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T13:23:47.423931175+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T13:23:47.423929549+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T13:23:47.423999025+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T13:23:47.424011665+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T13:23:47.424056178+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-748927-749116-2025117688/socket","Net":"unix"}} +{"time":"2026-06-02T13:23:47.424096536+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..db4e2c00a3a69d691813350934a934952e4e898b --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,27 @@ +{"time":"2026-06-02T13:23:46.452212172+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T13:23:46.75164581+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T13:23:46.751806481+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:46.751898826+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:46.752152551+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:46.752187506+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:46.752236787+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:46.754279871+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T13:23:46.905452898+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T13:23:47.35351688+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=086d785206a0acfd8246974a214a7bcb25d68f8d4cc74760663b52961f513aca"} +{"time":"2026-06-02T13:23:47.353651813+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B52C337C9BA8664b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=086d785206a0acfd8246974a214a7bcb25d68f8d4cc74760663b52961f513aca, Size: 7790}"} +{"time":"2026-06-02T13:23:47.356321514+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=75fb2a085ac28ab6a572f83de132c53da94514befd7f00bd8a5e5e1c49291b40"} +{"time":"2026-06-02T13:23:47.356307447+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=bf6f4399f74da432fb1aca7de6c80e5eb206d79d61c1b536014f7c0e4b202569"} +{"time":"2026-06-02T13:23:47.356368893+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B52C337CB914544b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=75fb2a085ac28ab6a572f83de132c53da94514befd7f00bd8a5e5e1c49291b40, Size: 2982}"} +{"time":"2026-06-02T13:23:47.356515218+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B52C337C5417E417e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=bf6f4399f74da432fb1aca7de6c80e5eb206d79d61c1b536014f7c0e4b202569, Size: 249}"} +{"time":"2026-06-02T13:23:47.356432748+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=01a346e342105710042c67affa384f57c09b4270098ec98d22fe2281693dc4f3"} +{"time":"2026-06-02T13:23:47.356709398+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B52C337C57D18B17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=01a346e342105710042c67affa384f57c09b4270098ec98d22fe2281693dc4f3, Size: 109}"} +{"time":"2026-06-02T13:23:47.357249833+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d97b1b9be91a0c3871c5e8362c34f589c1d28a79659f31678ed2e079dbfd3b60"} +{"time":"2026-06-02T13:23:47.357458353+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B52C337C52F22917e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=d97b1b9be91a0c3871c5e8362c34f589c1d28a79659f31678ed2e079dbfd3b60, Size: 2863}"} +{"time":"2026-06-02T13:23:47.362670218+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4acaa098df48774d91a19a6c12b3a998c504f43f17f1d0aaa4977aa26202d9ef"} +{"time":"2026-06-02T13:23:47.362815992+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B52C337C533A9317e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T052347Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=4acaa098df48774d91a19a6c12b3a998c504f43f17f1d0aaa4977aa26202d9ef, Size: 14790}"} +{"time":"2026-06-02T13:23:47.363105059+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T13:23:47.417576005+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T13:23:47.422995262+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:47.423065809+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:47.423164543+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T13:23:47.42318452+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..b9915177744991f7bfcde5807b0505c4b85ce96a --- /dev/null +++ b/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug.log @@ -0,0 +1,24 @@ +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_setup.py:_flush():81] Configure stats pid to 748927 +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug.log +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_132346-w3wdpl8c/logs/debug-internal.log +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_init.py:init():844] calling init triggers +2026-06-02 13:23:46,196 INFO MainThread:748927 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 1, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 13:23:46,197 INFO MainThread:748927 [wandb_init.py:init():892] starting backend +2026-06-02 13:23:46,442 INFO MainThread:748927 [wandb_init.py:init():895] sending inform_init request +2026-06-02 13:23:46,447 INFO MainThread:748927 [wandb_init.py:init():903] backend started and connected +2026-06-02 13:23:46,449 INFO MainThread:748927 [wandb_init.py:init():973] updated telemetry +2026-06-02 13:23:46,452 INFO MainThread:748927 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 13:23:46,903 INFO MainThread:748927 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 13:23:46,997 INFO MainThread:748927 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 13:23:46,997 INFO MainThread:748927 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 13:23:46,997 INFO MainThread:748927 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 13:23:46,997 INFO MainThread:748927 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 13:23:47,002 INFO MainThread:748927 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 13:23:47,198 INFO MainThread:748927 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 13:23:47,198 INFO MainThread:748927 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 13:23:47,199 INFO MainThread:748927 [wandb_run.py:_restore():2472] restore +2026-06-02 13:23:47,199 INFO MainThread:748927 [wandb_run.py:_restore():2478] restore done +2026-06-02 13:23:47,421 INFO MainThread:748927 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_132346-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_132346-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..d6d8d1abfe1036d7ad10ec900611f4ad2583b266 Binary files /dev/null and b/reward/wandb/run-20260602_132346-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_140728-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_140728-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d94d756b5932b655edabb510129e26f30e533752 --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + mat11aa3yvh6r6khnp0t4f3nvnp97rz7: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=3 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T06:07:28.454430Z" + writerId: mat11aa3yvh6r6khnp0t4f3nvnp97rz7 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 3 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_140728-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..2dd695639ae08243e578e205b1b46c98b2fa43ab --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 3 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0352 avg length: 35.44 diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_140728-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..23dad68fc670872c2e9591dfc60017a12371218d --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T06:07:28.454430Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=3" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "mat11aa3yvh6r6khnp0t4f3nvnp97rz7" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..576467cbff7ebf378e99e548e98e6a7087c29a81 --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/acc":0.03515625,"reward/train_step":3,"reward/t_grpo_bonus":0.3000000000000004,"_wandb":{"runtime":725},"reward/avg_response_length":35.435546875,"train/loss":-0.5786913633346558,"train/learning_rate":1.249999999999999e-07,"_runtime":725.21013027,"reward/unbiased_bonus":0.01875,"_timestamp":1.7803804497481031e+09,"_step":3} \ No newline at end of file diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..156791052684bb23f9a2403ad018f5e4022d31df --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T14:07:28.520597972+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpgn8lvxz2/port-864183.txt","pid":864183,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T14:07:28.521517583+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":864183} +{"time":"2026-06-02T14:07:28.521515115+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-864183-864391-1628080521/socket","Net":"unix"}} +{"time":"2026-06-02T14:07:28.701677902+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T14:07:28.710214896+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T14:07:29.311403558+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T14:07:29.749576478+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"cixw5l94n3ig"} +{"time":"2026-06-02T14:07:29.936371398+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"cixw5l94n3ig"} +{"time":"2026-06-02T14:07:29.938913287+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939589234+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939686283+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939713811+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939724286+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939755046+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939761923+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T14:07:29.939769238+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T14:07:29.939829237+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-864183-864391-1628080521/socket","Net":"unix"}} +{"time":"2026-06-02T14:07:29.939848505+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..08885585c05ac542365a1886ca7ad35b2abb37cf --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,27 @@ +{"time":"2026-06-02T14:07:28.710376472+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T14:07:29.31087523+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T14:07:29.311056685+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.31113619+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.311382868+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.311424302+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.311421912+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.315780542+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T14:07:29.540230185+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T14:07:29.871823495+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5b68d5e9d91824b17737fcee44b9e0887f92857c6f0df6aab2d780886d007752"} +{"time":"2026-06-02T14:07:29.871915143+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B52E96166AD5E517e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5b68d5e9d91824b17737fcee44b9e0887f92857c6f0df6aab2d780886d007752, Size: 5725}"} +{"time":"2026-06-02T14:07:29.874269104+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a863d333c0def1c7bd8d1f7f3e5d73adcbfbc96e0800ecb2438f49ed96d9ce37"} +{"time":"2026-06-02T14:07:29.8743791+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B52E9616F197494b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a863d333c0def1c7bd8d1f7f3e5d73adcbfbc96e0800ecb2438f49ed96d9ce37, Size: 2982}"} +{"time":"2026-06-02T14:07:29.874427674+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0f89bcb9a3c3fee48c2eff7fe963b4a3e62c2eb1d5a0ab52213707ce4c3da55b"} +{"time":"2026-06-02T14:07:29.874563231+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B52E9616829CBD17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0f89bcb9a3c3fee48c2eff7fe963b4a3e62c2eb1d5a0ab52213707ce4c3da55b, Size: 334}"} +{"time":"2026-06-02T14:07:29.876935342+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5c37289f8f118d799157f7f071cc101a43d10592854963017854100c8271699a"} +{"time":"2026-06-02T14:07:29.878341396+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0988cbcded5380c19998260939397f83bbe857ddbb291447611ec134b0f4b0ab"} +{"time":"2026-06-02T14:07:29.880234262+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B52E9615DF183629678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5c37289f8f118d799157f7f071cc101a43d10592854963017854100c8271699a, Size: 109}"} +{"time":"2026-06-02T14:07:29.880268355+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B52E9615E6697D29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0988cbcded5380c19998260939397f83bbe857ddbb291447611ec134b0f4b0ab, Size: 989}"} +{"time":"2026-06-02T14:07:29.890324449+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9b2faae217262a0cc2b35ccef5ae4d68dea9288a5da9a5d69116b1c2746faa36"} +{"time":"2026-06-02T14:07:29.890451633+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B52E9615CB475A29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T060729Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=9b2faae217262a0cc2b35ccef5ae4d68dea9288a5da9a5d69116b1c2746faa36, Size: 14790}"} +{"time":"2026-06-02T14:07:29.891007097+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T14:07:29.933627398+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T14:07:29.938953414+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.938996912+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.939064046+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T14:07:29.939076611+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..b25364985ffa39395d36c1d8f284de25551ff71c --- /dev/null +++ b/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_setup.py:_flush():81] Configure stats pid to 864183 +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug.log +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_140728-w3wdpl8c/logs/debug-internal.log +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_init.py:init():844] calling init triggers +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 3, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 14:07:28,457 INFO MainThread:864183 [wandb_init.py:init():892] starting backend +2026-06-02 14:07:28,702 INFO MainThread:864183 [wandb_init.py:init():895] sending inform_init request +2026-06-02 14:07:28,707 INFO MainThread:864183 [wandb_init.py:init():903] backend started and connected +2026-06-02 14:07:28,708 INFO MainThread:864183 [wandb_init.py:init():973] updated telemetry +2026-06-02 14:07:28,711 INFO MainThread:864183 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 14:07:29,534 INFO MainThread:864183 [wandb_init.py:init():1037] run resumed +2026-06-02 14:07:29,538 INFO MainThread:864183 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 14:07:29,627 INFO MainThread:864183 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 14:07:29,627 INFO MainThread:864183 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 14:07:29,627 INFO MainThread:864183 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 14:07:29,627 INFO MainThread:864183 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 14:07:29,631 INFO MainThread:864183 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 14:07:29,748 INFO MainThread:864183 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 14:07:29,748 INFO MainThread:864183 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 14:07:29,749 INFO MainThread:864183 [wandb_run.py:_restore():2472] restore +2026-06-02 14:07:29,749 INFO MainThread:864183 [wandb_run.py:_restore():2478] restore done +2026-06-02 14:07:29,937 INFO MainThread:864183 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_140728-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_140728-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..4be0018b2033a7d7eecb148a52837f7f75911e3a Binary files /dev/null and b/reward/wandb/run-20260602_140728-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_152755-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_152755-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e05eea487e1a8b537910134120a87846f5e4636b --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 87mgpsd36ulkn5vi2parnnpnzqumwrkx: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=6 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T07:27:55.155348Z" + writerId: 87mgpsd36ulkn5vi2parnnpnzqumwrkx + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 6 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_152755-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..03ab96c8d5232f91ca5203423e9ff3178a4c532d --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 6 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0410 avg length: 39.33 diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_152755-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..68edbc51e64643b3a6b3d3e84fb9487dce56797d --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T07:27:55.155348Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=6" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "87mgpsd36ulkn5vi2parnnpnzqumwrkx" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..259a25d0154d14aac85d93bfcfb12b19accc0617 --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/t_grpo_bonus":0.3000000000000004,"_runtime":2339,"reward/acc":0.03515625,"_step":10,"_wandb":{"runtime":2339},"reward/unbiased_bonus":0.01875,"train/learning_rate":8.628481651367888e-08,"train/loss":0.3788445591926574,"reward/avg_response_length":35.435546875,"reward/train_step":3,"_timestamp":1.780382672555827e+09} \ No newline at end of file diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..95e577572ff0b5cea35a8380d5ca7d1e0cf5f090 --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T15:27:55.241072459+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpq43sk8qf/port-1060725.txt","pid":1060725,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T15:27:55.241979292+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1060725} +{"time":"2026-06-02T15:27:55.241949536+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1060725-1060910-895001094/socket","Net":"unix"}} +{"time":"2026-06-02T15:27:55.413133438+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T15:27:55.422637939+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:27:56.444347217+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:27:56.970010077+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"uqig3khe52yl"} +{"time":"2026-06-02T15:27:57.16697127+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"uqig3khe52yl"} +{"time":"2026-06-02T15:27:57.167900847+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:27:57.168759644+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:27:57.169247738+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T15:27:57.16932437+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T15:27:57.169359721+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T15:27:57.169341926+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T15:27:57.16947724+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T15:27:57.169499917+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T15:27:57.169566602+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1060725-1060910-895001094/socket","Net":"unix"}} +{"time":"2026-06-02T15:27:57.169635588+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..e7494fba622ae39cba9c2743950bafce0bb03ef2 --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T15:27:55.422847947+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T15:27:56.443611951+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T15:27:56.443864349+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:56.443982026+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:56.444307822+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:56.444339027+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:56.444353993+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:56.446622323+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T15:27:56.674037775+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T15:27:56.968363667+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":6,"current":11} +{"time":"2026-06-02T15:27:57.107600129+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dba8a9ef696ec00124f81c65b0ca072f57f823ed491cb0d2eaaf8f125a954624"} +{"time":"2026-06-02T15:27:57.107774367+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B532FA03FE5C0817e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dba8a9ef696ec00124f81c65b0ca072f57f823ed491cb0d2eaaf8f125a954624, Size: 989}"} +{"time":"2026-06-02T15:27:57.108767768+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a34b0138077eef759e1346ba80d17250f12cd2a2a8a67d81b8ddff08c87f2754"} +{"time":"2026-06-02T15:27:57.1088805+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B532FA0349BA2729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a34b0138077eef759e1346ba80d17250f12cd2a2a8a67d81b8ddff08c87f2754, Size: 2982}"} +{"time":"2026-06-02T15:27:57.109155972+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=43bb9923d910913a79dc56f3681ae9752a368a781abcbace008f5142ba59845e"} +{"time":"2026-06-02T15:27:57.10942356+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B532FA034F55EE29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=43bb9923d910913a79dc56f3681ae9752a368a781abcbace008f5142ba59845e, Size: 109}"} +{"time":"2026-06-02T15:27:57.109969172+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a90df51a32c08118e09bb03d9306bca452188bcd2da82b99877f4888773b96ee"} +{"time":"2026-06-02T15:27:57.110126972+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B532FA042463EB17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a90df51a32c08118e09bb03d9306bca452188bcd2da82b99877f4888773b96ee, Size: 5725}"} +{"time":"2026-06-02T15:27:57.112717788+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0b61b8a1344f598f4ac33b8be9e62bc37e9082f7a79401af67f7b83f655f1119"} +{"time":"2026-06-02T15:27:57.112823813+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B532FA042E3B9C17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0b61b8a1344f598f4ac33b8be9e62bc37e9082f7a79401af67f7b83f655f1119, Size: 326}"} +{"time":"2026-06-02T15:27:57.117090964+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=03f9647998d15738a8076ac59a6af60134e454cbc7cb5182d245c47bfa82ff07"} +{"time":"2026-06-02T15:27:57.117214623+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B532FA047BA8AF4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T072757Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=03f9647998d15738a8076ac59a6af60134e454cbc7cb5182d245c47bfa82ff07, Size: 14790}"} +{"time":"2026-06-02T15:27:57.117520077+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T15:27:57.16140763+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T15:27:57.167952213+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:57.167985845+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:57.168096524+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:27:57.16811007+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..db61609256371afd063b12bde753246812bda40a --- /dev/null +++ b/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_setup.py:_flush():81] Configure stats pid to 1060725 +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug.log +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_152755-w3wdpl8c/logs/debug-internal.log +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_init.py:init():844] calling init triggers +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 6, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 15:27:55,157 INFO MainThread:1060725 [wandb_init.py:init():892] starting backend +2026-06-02 15:27:55,413 INFO MainThread:1060725 [wandb_init.py:init():895] sending inform_init request +2026-06-02 15:27:55,420 INFO MainThread:1060725 [wandb_init.py:init():903] backend started and connected +2026-06-02 15:27:55,422 INFO MainThread:1060725 [wandb_init.py:init():973] updated telemetry +2026-06-02 15:27:55,428 INFO MainThread:1060725 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 15:27:56,669 INFO MainThread:1060725 [wandb_init.py:init():1037] run resumed +2026-06-02 15:27:56,672 INFO MainThread:1060725 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 15:27:56,782 INFO MainThread:1060725 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 15:27:56,782 INFO MainThread:1060725 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 15:27:56,782 INFO MainThread:1060725 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 15:27:56,783 INFO MainThread:1060725 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 15:27:56,788 INFO MainThread:1060725 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 15:27:56,968 INFO MainThread:1060725 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 15:27:56,968 INFO MainThread:1060725 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 15:27:56,969 INFO MainThread:1060725 [wandb_run.py:_restore():2472] restore +2026-06-02 15:27:56,970 INFO MainThread:1060725 [wandb_run.py:_restore():2478] restore done +2026-06-02 15:27:57,166 INFO MainThread:1060725 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_152755-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_152755-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..5141a3cb017fe94572691a7694aea09a6037953e Binary files /dev/null and b/reward/wandb/run-20260602_152755-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_155753-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_155753-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..080dea4521b7d2bdc07a1cd7ac266a128cd5e7ee --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + o0pg1kmrvuplnms3lxhcz289cwpn4bhg: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=7 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T07:57:53.498293Z" + writerId: o0pg1kmrvuplnms3lxhcz289cwpn4bhg + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 7 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_155753-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..6177ff0947e107d2878a505795d61f1ed9fc0911 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 7 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0410 avg length: 37.15 diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_155753-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..dd430fecebe4e5bf181417ff7f119a34eac728e9 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T07:57:53.498293Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=7" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "o0pg1kmrvuplnms3lxhcz289cwpn4bhg" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..0939d1e63e98b9a4f523d5bb92b208b950156ba5 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/unbiased_bonus":0.01875,"reward/t_grpo_bonus":0.3000000000000004,"train/learning_rate":8.628481651367888e-08,"_step":10,"reward/acc":0.03515625,"_wandb":{"runtime":3084},"_runtime":3084,"reward/avg_response_length":35.435546875,"_timestamp":1.780382672555827e+09,"train/loss":0.3788445591926574,"reward/train_step":3} \ No newline at end of file diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..9e5b20a931fb5e219e932403dd97ccd0c0fecfe4 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T15:57:53.566179759+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmpcldbrqe_/port-1119545.txt","pid":1119545,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T15:57:53.566743293+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1119545} +{"time":"2026-06-02T15:57:53.566728704+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1119545-1119703-499807096/socket","Net":"unix"}} +{"time":"2026-06-02T15:57:53.747232468+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T15:57:53.757340738+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:57:54.66063531+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:57:55.161136168+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"es7pkdemfeik"} +{"time":"2026-06-02T15:57:55.349362363+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"es7pkdemfeik"} +{"time":"2026-06-02T15:57:55.350189216+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:57:55.351867581+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:57:55.351972927+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T15:57:55.351994487+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T15:57:55.352003686+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T15:57:55.352033311+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T15:57:55.352102686+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1119545-1119703-499807096/socket","Net":"unix"}} +{"time":"2026-06-02T15:57:55.352194256+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T15:57:55.352207188+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T15:57:55.352231572+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..1486fc06c3b9ac75c59ede04d9b40269543eb8bc --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T15:57:53.757501033+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T15:57:54.660024712+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T15:57:54.660262726+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:54.660359755+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:54.660607698+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:54.660630963+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:54.660637866+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:54.666218691+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T15:57:54.920999839+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T15:57:55.160163367+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":7,"current":11} +{"time":"2026-06-02T15:57:55.294066301+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=beec775a27538504f6741437972a44f7806f1b38def46eca77691a3ae4cfd739"} +{"time":"2026-06-02T15:57:55.294210212+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5df9743fb6d05b18dc36992955ece2ae39cefb60fe66967639d63b0f85d66771"} +{"time":"2026-06-02T15:57:55.29424724+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B5349CB0A559E74b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=beec775a27538504f6741437972a44f7806f1b38def46eca77691a3ae4cfd739, Size: 109}"} +{"time":"2026-06-02T15:57:55.294352982+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B5349CB0A57E684b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5df9743fb6d05b18dc36992955ece2ae39cefb60fe66967639d63b0f85d66771, Size: 5725}"} +{"time":"2026-06-02T15:57:55.295195898+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=714ce9ead81d5b74a717bc4e1a6408f1871297da8cf5505db8031c0ab20fd372"} +{"time":"2026-06-02T15:57:55.295338196+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B5349CB0AD2B074b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=714ce9ead81d5b74a717bc4e1a6408f1871297da8cf5505db8031c0ab20fd372, Size: 989}"} +{"time":"2026-06-02T15:57:55.295572911+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0a57e5c6e401c460aef6a6380d583dc0783d35dcc8c40643bd78b334223ece9e"} +{"time":"2026-06-02T15:57:55.295779999+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B5349CB0AFE41A4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0a57e5c6e401c460aef6a6380d583dc0783d35dcc8c40643bd78b334223ece9e, Size: 326}"} +{"time":"2026-06-02T15:57:55.296810079+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=daddddb2ac7797d4582e291fe08c9ca15435cfb7bd04bfa82ff3c3cc28ed5a11"} +{"time":"2026-06-02T15:57:55.296955387+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B5349CB228687A29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=daddddb2ac7797d4582e291fe08c9ca15435cfb7bd04bfa82ff3c3cc28ed5a11, Size: 2982}"} +{"time":"2026-06-02T15:57:55.304612123+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=af552742e4510ab48af11216f17c2cb5be8a9db51032e35be1236dfd9a940f40"} +{"time":"2026-06-02T15:57:55.304769042+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B5349CB03F228817e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075755Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=af552742e4510ab48af11216f17c2cb5be8a9db51032e35be1236dfd9a940f40, Size: 14790}"} +{"time":"2026-06-02T15:57:55.305725785+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T15:57:55.344343894+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T15:57:55.350249953+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:55.350291867+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:55.350433413+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:57:55.350453301+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..ae57c1fb9a41d0a11be46747e052a8976eca6140 --- /dev/null +++ b/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_setup.py:_flush():81] Configure stats pid to 1119545 +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug.log +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155753-w3wdpl8c/logs/debug-internal.log +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_init.py:init():844] calling init triggers +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 7, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 15:57:53,500 INFO MainThread:1119545 [wandb_init.py:init():892] starting backend +2026-06-02 15:57:53,747 INFO MainThread:1119545 [wandb_init.py:init():895] sending inform_init request +2026-06-02 15:57:53,753 INFO MainThread:1119545 [wandb_init.py:init():903] backend started and connected +2026-06-02 15:57:53,755 INFO MainThread:1119545 [wandb_init.py:init():973] updated telemetry +2026-06-02 15:57:53,760 INFO MainThread:1119545 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 15:57:54,914 INFO MainThread:1119545 [wandb_init.py:init():1037] run resumed +2026-06-02 15:57:54,919 INFO MainThread:1119545 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 15:57:55,019 INFO MainThread:1119545 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 15:57:55,020 INFO MainThread:1119545 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 15:57:55,020 INFO MainThread:1119545 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 15:57:55,020 INFO MainThread:1119545 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 15:57:55,024 INFO MainThread:1119545 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 15:57:55,159 INFO MainThread:1119545 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 15:57:55,160 INFO MainThread:1119545 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 15:57:55,160 INFO MainThread:1119545 [wandb_run.py:_restore():2472] restore +2026-06-02 15:57:55,160 INFO MainThread:1119545 [wandb_run.py:_restore():2478] restore done +2026-06-02 15:57:55,349 INFO MainThread:1119545 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_155753-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_155753-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..ac12bbf31e7070ee2288bc7165c290a7425c8052 Binary files /dev/null and b/reward/wandb/run-20260602_155753-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_155801-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_155801-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fa8e9f528e0c2ff5e447d02e3975d57d4aab80bd --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + ktw3zbvie8ipl06ardjn7ktm3qk708cd: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=7 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T07:58:01.810743Z" + writerId: ktw3zbvie8ipl06ardjn7ktm3qk708cd + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 7 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_155801-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..6177ff0947e107d2878a505795d61f1ed9fc0911 --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 7 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0410 avg length: 37.15 diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_155801-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..3428cfeb1b3f7c02b8d12c09b67f79c0bfe983fd --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T07:58:01.810743Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=7" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "ktw3zbvie8ipl06ardjn7ktm3qk708cd" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..2e35a848bd355ca20270a5e7649f29f4b172b7f3 --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"_step":10,"reward/unbiased_bonus":0.01875,"_timestamp":1.780382672555827e+09,"reward/train_step":3,"_wandb":{"runtime":3084},"train/loss":0.3788445591926574,"train/learning_rate":8.628481651367888e-08,"_runtime":3084,"reward/avg_response_length":35.435546875,"reward/acc":0.03515625,"reward/t_grpo_bonus":0.3000000000000004} \ No newline at end of file diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..87ea47b722840fc5aa8cbf10b6c18ce48638e2d4 --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T15:58:01.89350596+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp36qj_rax/port-1119976.txt","pid":1119976,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T15:58:01.894466272+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1119976} +{"time":"2026-06-02T15:58:01.894448265+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1119976-1120135-767491754/socket","Net":"unix"}} +{"time":"2026-06-02T15:58:02.066001832+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T15:58:02.074426026+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:58:02.886706909+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:58:03.325721339+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"ujbebcegarxa"} +{"time":"2026-06-02T15:58:03.538991083+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"ujbebcegarxa"} +{"time":"2026-06-02T15:58:03.539666167+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540429216+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540441795+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540452531+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540463894+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T15:58:03.540468848+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540558308+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1119976-1120135-767491754/socket","Net":"unix"}} +{"time":"2026-06-02T15:58:03.540581032+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540595549+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T15:58:03.540607186+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..68dbfc0e30e353a3891b72670116afac79736ee2 --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T15:58:02.07459076+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T15:58:02.885954698+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T15:58:02.886212384+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:02.886308858+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:02.886670942+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:02.886743355+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:02.886742664+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:02.892960999+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T15:58:03.089883927+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T15:58:03.324579074+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":7,"current":11} +{"time":"2026-06-02T15:58:03.448021152+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ab0513c006c8bbad5d9e0c2de25ecfef2cf13bf3fead00cd9be5ec3026bca5f6"} +{"time":"2026-06-02T15:58:03.448152921+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B5349E968993934b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ab0513c006c8bbad5d9e0c2de25ecfef2cf13bf3fead00cd9be5ec3026bca5f6, Size: 5725}"} +{"time":"2026-06-02T15:58:03.44930542+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ac1edd21df0e2470f5b08bfc8e4b1e60df1242d863501f0b749a05816a106c5c"} +{"time":"2026-06-02T15:58:03.449451472+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B5349E9626078B17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=ac1edd21df0e2470f5b08bfc8e4b1e60df1242d863501f0b749a05816a106c5c, Size: 326}"} +{"time":"2026-06-02T15:58:03.449504389+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a6b5600b13eecb32f7ecaf84a99bb9a4a8b5388e2c62adc999b1314e27a417e0"} +{"time":"2026-06-02T15:58:03.449648352+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B5349E9633402817e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=a6b5600b13eecb32f7ecaf84a99bb9a4a8b5388e2c62adc999b1314e27a417e0, Size: 2982}"} +{"time":"2026-06-02T15:58:03.495679433+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=29e3ab60ff318b2a0cdbfa9231b6f587a727fb0a2659cbcee39d1199ce541b3d"} +{"time":"2026-06-02T15:58:03.495735021+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=027e14ce10fad69ec8e5025171dac48ea9862b51052c40c43b66f15a6610b964"} +{"time":"2026-06-02T15:58:03.495813916+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B5349E960077F217e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=29e3ab60ff318b2a0cdbfa9231b6f587a727fb0a2659cbcee39d1199ce541b3d, Size: 109}"} +{"time":"2026-06-02T15:58:03.495853901+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B5349E967993814b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=027e14ce10fad69ec8e5025171dac48ea9862b51052c40c43b66f15a6610b964, Size: 989}"} +{"time":"2026-06-02T15:58:03.497394233+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=55c4e4d928b5eecf5bfd6e13798dbb514580126b7559857bcc80571e19e8356b"} +{"time":"2026-06-02T15:58:03.49753674+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B5349E98131EFB29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T075803Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=55c4e4d928b5eecf5bfd6e13798dbb514580126b7559857bcc80571e19e8356b, Size: 14790}"} +{"time":"2026-06-02T15:58:03.497978308+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T15:58:03.534587724+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T15:58:03.53969659+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:03.539729986+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:03.539814247+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T15:58:03.539830278+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..2e1f56f84689910eda94cc92f32c6a363d931ffa --- /dev/null +++ b/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_setup.py:_flush():81] Configure stats pid to 1119976 +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug.log +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_155801-w3wdpl8c/logs/debug-internal.log +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_init.py:init():844] calling init triggers +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 7, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 15:58:01,813 INFO MainThread:1119976 [wandb_init.py:init():892] starting backend +2026-06-02 15:58:02,066 INFO MainThread:1119976 [wandb_init.py:init():895] sending inform_init request +2026-06-02 15:58:02,071 INFO MainThread:1119976 [wandb_init.py:init():903] backend started and connected +2026-06-02 15:58:02,073 INFO MainThread:1119976 [wandb_init.py:init():973] updated telemetry +2026-06-02 15:58:02,079 INFO MainThread:1119976 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 15:58:03,084 INFO MainThread:1119976 [wandb_init.py:init():1037] run resumed +2026-06-02 15:58:03,088 INFO MainThread:1119976 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 15:58:03,185 INFO MainThread:1119976 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 15:58:03,185 INFO MainThread:1119976 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 15:58:03,185 INFO MainThread:1119976 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 15:58:03,185 INFO MainThread:1119976 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 15:58:03,190 INFO MainThread:1119976 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 15:58:03,324 INFO MainThread:1119976 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 15:58:03,324 INFO MainThread:1119976 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 15:58:03,325 INFO MainThread:1119976 [wandb_run.py:_restore():2472] restore +2026-06-02 15:58:03,325 INFO MainThread:1119976 [wandb_run.py:_restore():2478] restore done +2026-06-02 15:58:03,538 INFO MainThread:1119976 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_155801-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_155801-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..bf73a4adb43ee10a42aef8069b15874b6aef7c4d Binary files /dev/null and b/reward/wandb/run-20260602_155801-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_162447-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_162447-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd84d6a2ae8c94ccf284e2cb457e85ed57dcf375 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 0pily6g0mbw3u8mv0c5a10xju7zbz4br: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=8 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T08:24:47.874143Z" + writerId: 0pily6g0mbw3u8mv0c5a10xju7zbz4br + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 8 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_162447-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..72083903875e1a0593d0a80ee8d95a7ec89fe339 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 8 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0039 avg length: 37.30 diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_162447-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..7a6a1163f7c78bc6f4456d724dcb7229f00c69a1 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T08:24:47.874143Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=8" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "0pily6g0mbw3u8mv0c5a10xju7zbz4br" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..8178742ad5dce0c7cc0851ecfcb1133c612d2133 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"_wandb":{"runtime":3689},"train/loss":0.3788445591926574,"train/learning_rate":8.628481651367888e-08,"reward/unbiased_bonus":0.01875,"reward/avg_response_length":35.435546875,"reward/train_step":3,"_timestamp":1.780382672555827e+09,"reward/t_grpo_bonus":0.3000000000000004,"_step":10,"reward/acc":0.03515625,"_runtime":3689} \ No newline at end of file diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..f42b6d4a5878a93369ee503867e6712a2f090e4e --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T16:24:47.955390517+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmprr5lfwah/port-1174257.txt","pid":1174257,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T16:24:47.956423504+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1174257} +{"time":"2026-06-02T16:24:47.956387622+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1174257-1174421-934569183/socket","Net":"unix"}} +{"time":"2026-06-02T16:24:48.129627509+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T16:24:48.139539634+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:48.557984399+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:49.032782966+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"4w4mgxyrw7yy"} +{"time":"2026-06-02T16:24:49.251524379+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"4w4mgxyrw7yy"} +{"time":"2026-06-02T16:24:49.25310718+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254017078+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254081543+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254100098+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254106215+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T16:24:49.254117649+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254202561+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1174257-1174421-934569183/socket","Net":"unix"}} +{"time":"2026-06-02T16:24:49.254231276+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254251392+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T16:24:49.254268142+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..9b195ccd976977d968e90064e2abc89d49df058f --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T16:24:48.139793091+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T16:24:48.55737745+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T16:24:48.55760008+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:48.557697909+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:48.557952239+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:48.55798561+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:48.558029251+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:48.563275286+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T16:24:48.801616695+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T16:24:49.031581239+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":8,"current":11} +{"time":"2026-06-02T16:24:49.164487947+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=93fff1b47beabbd146457fb5bd3ac8ef483ae7534e12cd5b46afaac3f25e1210"} +{"time":"2026-06-02T16:24:49.164879275+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B5361472BB2ECD4b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=93fff1b47beabbd146457fb5bd3ac8ef483ae7534e12cd5b46afaac3f25e1210, Size: 109}"} +{"time":"2026-06-02T16:24:49.166137519+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=926d147222e8c09f8c1f3b9363b333be53b33e98cf50e81b3223008b18fa7e5e"} +{"time":"2026-06-02T16:24:49.166262041+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B536147259842117e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=926d147222e8c09f8c1f3b9363b333be53b33e98cf50e81b3223008b18fa7e5e, Size: 989}"} +{"time":"2026-06-02T16:24:49.167029455+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=805b14757a90d70422d182831c30d315878795412fbcca88d14e6d36fc1d3374"} +{"time":"2026-06-02T16:24:49.167169543+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B53614745B2F4F29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=805b14757a90d70422d182831c30d315878795412fbcca88d14e6d36fc1d3374, Size: 2982}"} +{"time":"2026-06-02T16:24:49.16880386+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=83caf8bb620dbd9a0218fe5b148ea9224d51a6854a620628b9cff2427e13c6ed"} +{"time":"2026-06-02T16:24:49.168961308+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B53614727822BF17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=83caf8bb620dbd9a0218fe5b148ea9224d51a6854a620628b9cff2427e13c6ed, Size: 5725}"} +{"time":"2026-06-02T16:24:49.178424216+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7b99c1d1cbffe48d1b433bac4b83aa2f0f338cc43390eb150169de5bd1bd430c"} +{"time":"2026-06-02T16:24:49.178570009+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B53614730035974b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=7b99c1d1cbffe48d1b433bac4b83aa2f0f338cc43390eb150169de5bd1bd430c, Size: 14790}"} +{"time":"2026-06-02T16:24:49.205225392+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e0c75115dadef97736dadc7418c53ec54ef2246927a2369705f4f38cfc284b02"} +{"time":"2026-06-02T16:24:49.20541017+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B536147428B5B729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082449Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=e0c75115dadef97736dadc7418c53ec54ef2246927a2369705f4f38cfc284b02, Size: 326}"} +{"time":"2026-06-02T16:24:49.206124033+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T16:24:49.248590974+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T16:24:49.253156057+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:49.253194854+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:49.253289362+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:49.253300718+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..3724e51d4d517781580b24ae54b6e6eee1d8bf52 --- /dev/null +++ b/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 16:24:47,876 INFO MainThread:1174257 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 16:24:47,876 INFO MainThread:1174257 [wandb_setup.py:_flush():81] Configure stats pid to 1174257 +2026-06-02 16:24:47,876 INFO MainThread:1174257 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 16:24:47,877 INFO MainThread:1174257 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug.log +2026-06-02 16:24:47,877 INFO MainThread:1174257 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162447-w3wdpl8c/logs/debug-internal.log +2026-06-02 16:24:47,877 INFO MainThread:1174257 [wandb_init.py:init():844] calling init triggers +2026-06-02 16:24:47,877 INFO MainThread:1174257 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 8, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 16:24:47,877 INFO MainThread:1174257 [wandb_init.py:init():892] starting backend +2026-06-02 16:24:48,130 INFO MainThread:1174257 [wandb_init.py:init():895] sending inform_init request +2026-06-02 16:24:48,136 INFO MainThread:1174257 [wandb_init.py:init():903] backend started and connected +2026-06-02 16:24:48,138 INFO MainThread:1174257 [wandb_init.py:init():973] updated telemetry +2026-06-02 16:24:48,142 INFO MainThread:1174257 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 16:24:48,795 INFO MainThread:1174257 [wandb_init.py:init():1037] run resumed +2026-06-02 16:24:48,799 INFO MainThread:1174257 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 16:24:48,895 INFO MainThread:1174257 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 16:24:48,895 INFO MainThread:1174257 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 16:24:48,895 INFO MainThread:1174257 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 16:24:48,895 INFO MainThread:1174257 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 16:24:48,899 INFO MainThread:1174257 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 16:24:49,031 INFO MainThread:1174257 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 16:24:49,031 INFO MainThread:1174257 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 16:24:49,032 INFO MainThread:1174257 [wandb_run.py:_restore():2472] restore +2026-06-02 16:24:49,032 INFO MainThread:1174257 [wandb_run.py:_restore():2478] restore done +2026-06-02 16:24:49,252 INFO MainThread:1174257 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_162447-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_162447-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..0c27b2c5c124027528a18c7be56f9f4e7bf785e3 Binary files /dev/null and b/reward/wandb/run-20260602_162447-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_162455-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_162455-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0e0f27dd75c7d1fedead214b37a18538b6094fa7 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + 5or8kxewit81il7wz7pasqef71e961dr: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=8 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T08:24:55.732140Z" + writerId: 5or8kxewit81il7wz7pasqef71e961dr + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 8 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_162455-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..72083903875e1a0593d0a80ee8d95a7ec89fe339 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 8 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0039 avg length: 37.30 diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_162455-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..ba89949e087efb9711bf5370c6d80be56cd13719 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T08:24:55.732140Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=8" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "5or8kxewit81il7wz7pasqef71e961dr" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..5bfe1c6f9949500698d22dd42fb2d6178d4ae21a --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"train/learning_rate":8.628481651367888e-08,"train/loss":0.3788445591926574,"_step":10,"reward/unbiased_bonus":0.01875,"_runtime":3689,"_timestamp":1.780382672555827e+09,"reward/train_step":3,"reward/acc":0.03515625,"_wandb":{"runtime":3689},"reward/t_grpo_bonus":0.3000000000000004,"reward/avg_response_length":35.435546875} \ No newline at end of file diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..486a833d0dff409e1841d6daf185e59446a65738 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T16:24:55.815618866+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp5xlawav9/port-1174680.txt","pid":1174680,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T16:24:55.816630428+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1174680} +{"time":"2026-06-02T16:24:55.816558994+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1174680-1174844-1131600006/socket","Net":"unix"}} +{"time":"2026-06-02T16:24:55.987571579+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T16:24:55.997997165+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:56.613297017+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:57.050464562+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"m5lr1gdq8c3c"} +{"time":"2026-06-02T16:24:57.246414871+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"m5lr1gdq8c3c"} +{"time":"2026-06-02T16:24:57.247288166+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248105905+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T16:24:57.24876522+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248824321+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248834421+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248916153+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248928901+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T16:24:57.248849284+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T16:24:57.249070079+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1174680-1174844-1131600006/socket","Net":"unix"}} +{"time":"2026-06-02T16:24:57.249121063+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..e8652a519a0ca944a0ccdda97bf045ff9d985ed2 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T16:24:55.998325686+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T16:24:56.612700715+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T16:24:56.61294248+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:56.613056147+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:56.613264862+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:56.613321999+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:56.61332115+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:56.616248572+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T16:24:56.812228735+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T16:24:57.048653618+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":8,"current":11} +{"time":"2026-06-02T16:24:57.184441142+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5e1400291ddb34737dd0b077f5c26f4d6f37f7588d25c0d230e6e375965ae1e8"} +{"time":"2026-06-02T16:24:57.184607928+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B53616504F7D6017e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5e1400291ddb34737dd0b077f5c26f4d6f37f7588d25c0d230e6e375965ae1e8, Size: 5725}"} +{"time":"2026-06-02T16:24:57.184828296+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=b83dcf11b92c8dad7b3b5121cb2c58dcf75067ff03f356f154f801c8a93c804b"} +{"time":"2026-06-02T16:24:57.184931207+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B53616523DC37829678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=b83dcf11b92c8dad7b3b5121cb2c58dcf75067ff03f356f154f801c8a93c804b, Size: 326}"} +{"time":"2026-06-02T16:24:57.188513359+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dc27496fb65e7b0e9054ffaa890ad92d879b90acbf7b745610e3b12557137614"} +{"time":"2026-06-02T16:24:57.188691357+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B536165079451317e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=dc27496fb65e7b0e9054ffaa890ad92d879b90acbf7b745610e3b12557137614, Size: 989}"} +{"time":"2026-06-02T16:24:57.190243685+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1e75642294d28fefac697381e80fbc109f8e26a36185b29a4ae40f6325d4d6b7"} +{"time":"2026-06-02T16:24:57.190417186+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B53616526C97C529678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1e75642294d28fefac697381e80fbc109f8e26a36185b29a4ae40f6325d4d6b7, Size: 2982}"} +{"time":"2026-06-02T16:24:57.191847525+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c1176c999655db398438fce5e6279f93fccc205c12538516520da9dd152100d"} +{"time":"2026-06-02T16:24:57.191959568+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B536165236A82B29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=1c1176c999655db398438fce5e6279f93fccc205c12538516520da9dd152100d, Size: 14790}"} +{"time":"2026-06-02T16:24:57.193091532+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0bb1801088ca86df7ebd09156cbb5646e443cf7cbf403956b4f6256d0d3f679b"} +{"time":"2026-06-02T16:24:57.193241121+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B5361650BEDDBE17e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T082457Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0bb1801088ca86df7ebd09156cbb5646e443cf7cbf403956b4f6256d0d3f679b, Size: 109}"} +{"time":"2026-06-02T16:24:57.193531182+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T16:24:57.236301195+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T16:24:57.247338874+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:57.247373161+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:57.247499074+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T16:24:57.247515025+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..aed2b6d5d6163bf01c76a19cb242c74e00d359d2 --- /dev/null +++ b/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_setup.py:_flush():81] Configure stats pid to 1174680 +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug.log +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_162455-w3wdpl8c/logs/debug-internal.log +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_init.py:init():844] calling init triggers +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 8, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 16:24:55,735 INFO MainThread:1174680 [wandb_init.py:init():892] starting backend +2026-06-02 16:24:55,987 INFO MainThread:1174680 [wandb_init.py:init():895] sending inform_init request +2026-06-02 16:24:55,993 INFO MainThread:1174680 [wandb_init.py:init():903] backend started and connected +2026-06-02 16:24:55,995 INFO MainThread:1174680 [wandb_init.py:init():973] updated telemetry +2026-06-02 16:24:56,001 INFO MainThread:1174680 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 16:24:56,807 INFO MainThread:1174680 [wandb_init.py:init():1037] run resumed +2026-06-02 16:24:56,810 INFO MainThread:1174680 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 16:24:56,906 INFO MainThread:1174680 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 16:24:56,906 INFO MainThread:1174680 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 16:24:56,906 INFO MainThread:1174680 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 16:24:56,906 INFO MainThread:1174680 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 16:24:56,910 INFO MainThread:1174680 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 16:24:57,048 INFO MainThread:1174680 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 16:24:57,049 INFO MainThread:1174680 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 16:24:57,049 INFO MainThread:1174680 [wandb_run.py:_restore():2472] restore +2026-06-02 16:24:57,049 INFO MainThread:1174680 [wandb_run.py:_restore():2478] restore done +2026-06-02 16:24:57,246 INFO MainThread:1174680 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_162455-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_162455-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..336135ab6a516b413968e6150898b4b6a79937ac Binary files /dev/null and b/reward/wandb/run-20260602_162455-w3wdpl8c/run-w3wdpl8c.wandb differ diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py b/reward/wandb/run-20260602_172441-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py new file mode 100644 index 0000000000000000000000000000000000000000..c71c1b394a00b9fb1c9602a9d51cf65032e639ae --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py @@ -0,0 +1,339 @@ +import json +import math_utils_v +import nest_asyncio +from concurrent.futures import ThreadPoolExecutor +import asyncio +import re +from termcolor import cprint +from omegaconf import MISSING +from omegaconf import DictConfig, ListConfig, OmegaConf +from typing import List, Union +import os +from collections import defaultdict +import sys + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, REPO_ROOT) + +import wandb +from train.utils import flatten_omega_conf, ensure_wandb_run_id + +def resolve_media_abs_path(sample: dict, dataset_root: str | None, media_type: str = "image") -> str | None: + p = sample.get(f"{media_type}_abs_path") + if p is None: + p = sample.get(media_type) or sample.get(f"{media_type}_path") + if p is None: + return None + if not os.path.isabs(p) and dataset_root: + p = os.path.join(dataset_root, p) + try: + return os.path.abspath(p) + except Exception: + return p + +def get_config(): + cli_conf = OmegaConf.from_cli() + yaml_conf = OmegaConf.load(cli_conf.config) + conf = OmegaConf.merge(yaml_conf, cli_conf) + return conf + +def remove_endoftext(obj: Union[str, List[str]]) -> Union[str, List[str]]: + token = '<|endoftext|>' + if isinstance(obj, str): + return obj.replace(token, '') + if isinstance(obj, list): + return [s.replace(token, '') if isinstance(s, str) else s for s in obj] + raise TypeError("Expected str or list of str") + + +if __name__ == "__main__": + + config = get_config() + run = None + if config.experiment.function == "train": + existing_run_id = OmegaConf.select(config, "wandb.run_id", default=None) + run_id = ensure_wandb_run_id(config) + resume_wandb_run = config.wandb.resume + if existing_run_id is None: + resume_wandb_run = False + wandb_config = {k: v for k, v in flatten_omega_conf(config, resolve=True)} + run = wandb.init( + project=config.experiment.project, + entity=config.wandb.get("entity", None), + id=run_id, + resume=resume_wandb_run, + config=wandb_config, + reinit=True, + name=config.experiment.project, + ) + + project_name = config.experiment.project + + if config.experiment.current_epoch == 1: + pretrained_model = config.model.pretrained_model + else: + pretrained_model = "../" + project_name + "/ckpt/" + config.model.optimized_name + + if config.experiment.function == "train": + shrink = config.training.shrink + dataset = config.dataset.train_dataset + outputs_name = "rl-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + elif config.experiment.function == "evaluation": + dataset = config.evaluation.eval_dataset + outputs_name = "eval-" + pretrained_model.replace("/", ".") + "-" + dataset + f"-step{config.experiment.current_epoch}" + + file_name = "../" + project_name + "/temp_data/outputs-" + outputs_name + ".json" + + with open(file_name, 'r') as f: + data = json.load(f) + + index_list = [] + extracted_output_list = [] + response_length_list = [] + for i in range(len(data)): + data[i]["correctness"] = [] + response_length_list += data[i]["response_length"] + index_list += [i] * len(data[i]["extracted_output"]) + extracted_output_list += remove_endoftext(data[i]["extracted_output"]) + + nest_asyncio.apply() + + async def get_correctness_all(): + executor = ThreadPoolExecutor(max_workers=64) + tasks = [] + + for p in range(len(index_list)): + pred = extracted_output_list[p] + idx = index_list[p] + + # 选择题正确性匹配逻辑 + if config.dataset.data_type == "video_reverse" or config.evaluation.data_type == "video_reverse": + gt = data[idx].get("response", "") + + async def mcq_check(p_str, g_str): + if p_str in g_str or g_str in p_str: + return True + + p_str = str(p_str).strip() + g_str = str(g_str).strip() + p_match = re.search(r'^([A-Z])[\.\s]', p_str) + g_match = re.search(r'^([A-Z])[\.\s]', g_str) + if p_match and g_match: + return p_match.group(1) == g_match.group(1) + return g_str in p_str + + tasks.append(mcq_check(pred, gt)) + else: + gt = data[idx].get("ground_truth_answer", "") + tasks.append(math_utils_v.is_equal(pred, gt, executor)) + + return await asyncio.gather(*tasks) + + correctness_all = asyncio.run(get_correctness_all()) + for p, ok in enumerate(correctness_all): + index_i = index_list[p] + data[index_i]["correctness"].append(bool(ok)) + + # ========================================================================= + # 核心新增逻辑:跨样本群组计算 T-GRPO 奖励 和 逆转无偏奖励 + # ========================================================================= + + # 1. 按照 data_id 分组映射索引 + grouped_data = defaultdict(lambda: { + "forward_False": [], "backward_False": [], + "forward_True": [], "backward_True": [] + }) + + for i in range(len(data)): + d_id = data[i].get("data_id") + if d_id is None: + continue + r_type = data[i].get("reversal_type", "forward") + is_shuf = str(data[i].get("is_shuffled", False)) + grouped_data[d_id][f"{r_type}_{is_shuf}"].append(i) + + # 计算并应用群组奖励 + all_temporal_bonuses = [] # 新增:记录所有的时序红利 + all_unbiased_bonuses = [] # 新增:记录所有的无偏红利 + + # 2. 计算并应用群组奖励 + for d_id, group in grouped_data.items(): + + def get_acc(key): + if not group[key]: return 0.0 + idx = group[key][0] + corr = data[idx]["correctness"] + return sum(corr) / len(corr) if len(corr) > 0 else 0.0 + + # 获取四组情况的正确率 + acc_f_ord = get_acc("forward_False") + acc_f_shuf = get_acc("forward_True") + acc_b_ord = get_acc("backward_False") + acc_b_shuf = get_acc("backward_True") + + # T-GRPO 奖励: 顺序正确率 >= 0.8 * 打乱正确率,得 0.3 + f_temporal_bonus = 0.3 if acc_f_ord >= 0.8 * acc_f_shuf else 0.0 + b_temporal_bonus = 0.3 if acc_b_ord >= 0.8 * acc_b_shuf else 0.0 + + # 逆转无偏奖励: 正反正确率差值 <= 0.2,且都不是彻底全错,得 0.3 + unbiased_bonus = 0.0 + if abs(acc_f_ord - acc_b_ord) <= 0.2 and (acc_f_ord > 0.1 or acc_b_ord > 0.1): + unbiased_bonus = 0.3 + + # 新增:将当前组的奖励记录下来用于统计 + if group["forward_False"]: + all_temporal_bonuses.append(f_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + if group["backward_False"]: + all_temporal_bonuses.append(b_temporal_bonus) + all_unbiased_bonuses.append(unbiased_bonus) + + # 仅将奖励发放给 顺序组(is_shuffled=False) 中回答正确的样本 + def apply_bonus(key, temporal_bonus, unbiased_bonus): + if not group[key]: return + idx = group[key][0] + raw_rewards = [] + for is_correct in data[idx]["correctness"]: + if is_correct: + # 基础分 1.0 + 时序红利 + 无偏红利 + raw_rewards.append(1.0 + temporal_bonus + unbiased_bonus) + else: + raw_rewards.append(0.0) + data[idx]["raw_rewards"] = raw_rewards + + apply_bonus("forward_False", f_temporal_bonus, unbiased_bonus) + apply_bonus("backward_False", b_temporal_bonus, unbiased_bonus) + + # ========================================================================= + + def z_score_normalize(lst): + mean = sum(lst) / len(lst) if len(lst) > 0 else 0.0 + std = (sum((x - mean) ** 2 for x in lst) / len(lst)) ** 0.5 if len(lst) > 0 else 0.0 + if std == 0: + return [0 for _ in lst] + return [(x - mean) / std for x in lst] + + final_data = [] + ordered_correctness = [] # 用于日志打印,不记录被打乱的实验数据 + + for i in range(len(data)): + # 丢弃打乱的对照组,它们仅仅用于上面的计算参照,不进入强化学习 + if data[i].get("is_shuffled", False): + continue + + ordered_correctness.extend(data[i]["correctness"]) + + # 如果部分数据没有走过分组逻辑,默认回退为原始 correct 分数 + raw_rewards = data[i].get("raw_rewards", [float(c) for c in data[i]["correctness"]]) + lengths = data[i]["response_length"] + + # 长度惩罚 + if config.reward.strict_len_check: + for j in range(len(lengths)): + if OmegaConf.select(config, "rollout.max_gen_length", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_gen_length - 5: + raw_rewards[j] = 0.0 + if OmegaConf.select(config, "rollout.max_token", default=MISSING) is not MISSING and lengths[j] >= config.rollout.max_token - 5: + raw_rewards[j] = 0.0 + + # Z-Score 优势归一化 + rewards = z_score_normalize(raw_rewards) + data[i]["rewards"] = rewards + + if config.experiment.function == "train": + proportion = sum(data[i]["correctness"]) / len(data[i]["correctness"]) if len(data[i]["correctness"]) > 0 else 0.0 + # 如果全部回答都是错的,或者全是对的(无差别区分度),则剔除该样本 + if proportion > 0.95 or proportion < 0.05: + continue + + for j in range(len(rewards)): + data_i = {} + data_i["prompt"] = data[i]["prompt"] + data_i["reward"] = rewards[j] + data_i["response"] = data[i]["full_output"][j] + data_i["step_map"] = data[i]["step_map"][j] + + # 保留其他需要的上下文 ID + data_i["data_id"] = data[i].get("data_id") + data_i["reversal_type"] = data[i].get("reversal_type") + + if "image_token_ids" in data[i]: + data_i["image_token_ids"] = data[i]["image_token_ids"] + + p_video_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "video") + if p_video_abs is not None: + data_i["video_abs_path"] = p_video_abs + + p_image_abs = resolve_media_abs_path(data[i], config.dataset.get("image_root", None), "image") + if p_image_abs is not None: + data_i["image_abs_path"] = p_image_abs + + final_data.append(data_i) + + if config.experiment.function == "evaluation": + data[i]["step_map"] = [] + + if config.experiment.function == "train": + with open("../" + project_name + "/temp_data/" + config.dataset.optimization_data + ".json", "w", encoding="utf-8") as f: + json.dump(final_data, f, indent=2, ensure_ascii=False) + + + os.makedirs(os.path.dirname(file_name), exist_ok=True) + with open(file_name, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + + outputs_result_name = "../" + project_name + "/results/results-" + outputs_name + ".txt" + os.makedirs(os.path.dirname(outputs_result_name), exist_ok=True) + with open(outputs_result_name, "a") as f: + # Save + print + def save_and_print(text): + cprint("\n\n\n" + text, color="green") + f.write(text + "\n") + + # 只计算有序组(有效学习组)的准确率来作为监控指标 + acc = (sum(ordered_correctness)/len(ordered_correctness)) if len(ordered_correctness) > 0 else float("nan") + avg_len = sum(response_length_list)/len(response_length_list) + + # 新增:计算 T-GRPO 和 Unbiased 奖励的平均值 + avg_temp = sum(all_temporal_bonuses)/len(all_temporal_bonuses) if all_temporal_bonuses else 0.0 + avg_unbias = sum(all_unbiased_bonuses)/len(all_unbiased_bonuses) if all_unbiased_bonuses else 0.0 + + output_text = f"train step: {config.experiment.current_epoch} " + if config.experiment.function == "train": + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} block_size: {config.rollout.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.rollout.remasking_strategy} top_k: {config.rollout.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + if config.model.model_base != "sdar" and config.model.model_base != "trado": + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} block_size: {config.evaluation.block_size} acc: {acc:.4f} avg length: {avg_len:.2f}" + else: + output_text = output_text + f"remasking_strategy: {config.evaluation.remasking_strategy} top_k: {config.evaluation.top_k} acc: {acc:.4f} avg length: {avg_len:.2f}" + save_and_print(output_text) + + if config.experiment.function == "train": + csv_file_path = f"../{project_name}/results/all_rewards.csv" + + # 如果是第1个 epoch/step,或者是新文件,就先写入表头 + write_header = not os.path.exists(csv_file_path) or config.experiment.current_epoch == 1 + + with open(csv_file_path, "a", encoding="utf-8") as f_csv: + if write_header: + f_csv.write("step,acc_reward,t_grpo_reward,unbiased_reward,response_length\n") + + # 按行追加当前 step 的数据 + f_csv.write(f"{config.experiment.current_epoch},{acc:.4f},{avg_temp:.4f},{avg_unbias:.4f},{avg_len:.2f}\n") + + if run is not None: + wandb.log( + { + "reward/acc": acc, + "reward/t_grpo_bonus": avg_temp, + "reward/unbiased_bonus": avg_unbias, + "reward/avg_response_length": avg_len, + "reward/train_step": config.experiment.current_epoch, + }, + step=config.experiment.current_epoch, + ) + wandb.finish() diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/config.yaml b/reward/wandb/run-20260602_172441-w3wdpl8c/files/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..db146a71a6f9176b1eb301ca97a864b81f4835ab --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/config.yaml @@ -0,0 +1,229 @@ +_wandb: + value: + cli_version: 0.25.0 + code_path: code/reward/rl_reward_video_reversal.py + e: + xvb1lk1cnls4lggnap8yupkndjuv02j1: + args: + - config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml + - wandb.run_id=w3wdpl8c + - experiment.function=train + - evaluation.block_size=None + - evaluation.top_k=None + - evaluation.remasking_strategy=None + - experiment.current_epoch=10 + codePath: reward/rl_reward_video_reversal.py + codePathLocal: rl_reward_video_reversal.py + email: shixi_runqing@staff.weibo.com + executable: /data8/runqing/miniconda/envs/dllm-rl/bin/python + git: + commit: 10b4fd1cba83e4496c20585dc2fd01dc02f20255 + remote: https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git + host: b1301b38c75f + os: Linux-5.15.0-144-generic-x86_64-with-glibc2.35 + program: /data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py + python: CPython 3.10.19 + root: /data4/runqing/dLLM-RL/reward + startedAt: "2026-06-02T09:24:41.968601Z" + writerId: xvb1lk1cnls4lggnap8yupkndjuv02j1 + m: [] + python_version: 3.10.19 + t: + "1": + - 1 + - 41 + "2": + - 1 + - 41 + "3": + - 2 + - 5 + - 13 + - 14 + - 16 + - 61 + - 62 + "4": 3.10.19 + "5": 0.25.0 + "10": + - 20 + "12": 0.25.0 + "13": linux-x86_64 +config: + value: ../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml +dataset.data_type: + value: video_reverse +dataset.optimization_data: + value: rl_data +dataset.train_dataset: + value: video_reversal_sft_train_cleaned_10k +evaluation.batch_size: + value: 1 +evaluation.block_size: + value: None +evaluation.data_type: + value: video_reverse +evaluation.dynamic_threshold: + value: 0.9 +evaluation.eval_dataset: + value: video_reversal_rl_eval +evaluation.further_horizon: + value: 128 +evaluation.if_eval: + value: false +evaluation.max_gen_length: + value: 128 +evaluation.num_response_per_task: + value: 3 +evaluation.remasking_strategy: + value: None +evaluation.remasking_strategy.0: + value: low_confidence_static +evaluation.remasking_strategy.1: + value: low_confidence_dynamic +evaluation.steps: + value: 128 +evaluation.target: + value: confidence +evaluation.temperature: + value: 0.1 +evaluation.top_k: + value: None +evaluation.use_cache: + value: true +execute.num_chunk: + value: 128 +experiment.current_epoch: + value: 10 +experiment.deepspeed_file: + value: 1_node_8_gpus_deepspeed_zero2 +experiment.eval_every: + value: 5 +experiment.function: + value: train +experiment.logging_dir: + value: rl_lavida_revvideo_orig10k_4gpu_len128/logs +experiment.node_index: + value: 0 +experiment.num_node: + value: 1 +experiment.project: + value: rl_lavida_revvideo_orig10k_4gpu_len128 +experiment.save_every: + value: 5 +experiment.start_from_scratch: + value: true +experiment.total_step: + value: 10 +lr_scheduler.params.learning_rate: + value: 5e-07 +lr_scheduler.params.min_lr_scale: + value: 1 +lr_scheduler.params.warmup_steps: + value: 0 +lr_scheduler.scheduler: + value: cosine +model.image_resolution: + value: 512 +model.model_base: + value: lavida +model.optimized_name: + value: optimized +model.pretrained_model: + value: /data4/runqing/hf/lavida-llada-v1.0-instruct +model.vq_model_path: + value: /data4/runqing/hf/magvitv2 +optimizer.name: + value: adamw +optimizer.params.beta1: + value: 0.9 +optimizer.params.beta2: + value: 0.999 +optimizer.params.epsilon: + value: 1e-08 +optimizer.params.learning_rate: + value: 5e-07 +optimizer.params.scale_lr: + value: false +optimizer.params.weight_decay: + value: 0 +reward.answer_must_in_box: + value: true +reward.strict_len_check: + value: false +rollout.batch_size: + value: 1 +rollout.block_size: + value: 32 +rollout.dynamic_threshold: + value: 0.9 +rollout.further_horizon: + value: 128 +rollout.max_gen_length: + value: 128 +rollout.num_response_per_task: + value: 8 +rollout.num_task_per_step: + value: 128 +rollout.remasking_strategy: + value: low_confidence_dynamic +rollout.steps: + value: 128 +rollout.target: + value: confidence +rollout.temperature: + value: 0.8 +rollout.use_cache: + value: true +system.HF_HOME: + value: null +system.HTTP_PROXY: + value: null +system.base_dir: + value: /data4/runqing/dLLM-RL +system.env_name: + value: /data8/runqing/miniconda/envs/dllm-rl +system.envs_dir: + value: /data8/runqing/miniconda/envs/dllm-rl +training.batch_size_lm: + value: 1 +training.beta: + value: 0.05 +training.enable_tf32: + value: true +training.eps: + value: 0.2 +training.gradient_accumulation_steps: + value: 2 +training.lower_p: + value: 0.35 +training.mask_times_per_sample: + value: 2 +training.max_gen_length: + value: 128 +training.max_grad_norm: + value: 1 +training.max_prompt_len: + value: 512 +training.method: + value: random_masking +training.mixed_precision: + value: bf16 +training.num_train_epochs: + value: 1 +training.post_num: + value: 1 +training.seed: + value: 10086 +training.shrink: + value: 8 +training.upper_p: + value: 0.9 +training.use_kl_estimator_k3: + value: true +wandb.entity: + value: null +wandb.resume: + value: auto +wandb.run_id: + value: w3wdpl8c diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/output.log b/reward/wandb/run-20260602_172441-w3wdpl8c/files/output.log new file mode 100644 index 0000000000000000000000000000000000000000..eeffd3fff7dfce4ee88eff6d13e7352b68db27bf --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/output.log @@ -0,0 +1,4 @@ + + + +train step: 10 remasking_strategy: low_confidence_dynamic block_size: 32 acc: 0.0234 avg length: 41.87 diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/requirements.txt b/reward/wandb/run-20260602_172441-w3wdpl8c/files/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..72500b9ab07fa4e88881df34659dae386e10da72 --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/requirements.txt @@ -0,0 +1,157 @@ +transformers==4.52.4 +nvidia-nvtx-cu12==12.4.127 +deepspeed==0.18.6 +typing-inspection==0.4.2 +scipy==1.15.3 +MarkupSafe==3.0.3 +nvidia-cuda-runtime-cu12==12.4.127 +detoxify==0.5.2 +yarl==1.22.0 +tornado==6.5.4 +nvidia-curand-cu12==10.3.5.147 +nest-asyncio==1.6.0 +safetensors==0.7.0 +async-timeout==5.0.1 +typing_extensions==4.15.0 +asttokens==3.0.1 +cuda-python==13.1.1 +executing==2.2.1 +nvidia-cudnn-frontend==1.18.0 +comm==0.2.3 +tokenizers==0.21.4 +six==1.17.0 +Pygments==2.19.2 +nvidia-cusparselt-cu12==0.6.2 +apache-tvm-ffi==0.1.8.post2 +flash_attn==2.7.4.post1 +tqdm==4.67.3 +tensorboard-data-server==0.7.2 +annotated-types==0.7.0 +math-verify==0.9.0 +idna==3.11 +regex==2026.1.15 +nvidia-cutlass-dsl-libs-base==4.4.0 +flashinfer-python==0.6.3 +click==8.3.1 +pytz==2025.2 +wheel==0.46.3 +ipykernel==7.2.0 +stack-data==0.6.3 +absl-py==2.4.0 +wandb==0.25.0 +pandas==2.3.3 +termcolor==3.3.0 +sympy==1.13.1 +joblib==1.5.3 +prompt_toolkit==3.0.52 +attrs==25.4.0 +nvidia-cusolver-cu12==11.6.1.9 +xxhash==3.6.0 +aiohappyeyeballs==2.6.1 +python-dateutil==2.9.0.post0 +frozenlist==1.8.0 +nvidia-ml-py==13.590.48 +multiprocess==0.70.18 +decorator==5.2.1 +cuda-pathfinder==1.3.4 +multidict==6.7.1 +pure_eval==0.2.3 +nvidia-cufft-cu12==11.2.1.3 +omegaconf==2.3.0 +PyYAML==6.0.3 +debugpy==1.8.20 +psutil==7.2.2 +ninja==1.13.0 +nvidia-cublas-cu12==12.4.5.8 +triton==3.2.0 +antlr4-python3-runtime==4.9.3 +peft==0.18.1 +aiosignal==1.4.0 +accelerate==1.12.0 +liger_kernel==0.7.0 +anyio==4.12.1 +decord==0.6.0 +h11==0.16.0 +urllib3==2.6.3 +wcwidth==0.6.0 +networkx==3.4.2 +huggingface_hub==0.36.2 +tzdata==2025.3 +xformers==0.0.29.post3 +tabulate==0.9.0 +certifi==2026.1.4 +tensorboard==2.20.0 +matplotlib-inline==0.2.1 +pip==26.0.1 +smmap==5.0.2 +nvidia-cuda-cupti-cu12==12.4.127 +Markdown==3.10.2 +nvidia-nccl-cu12==2.21.5 +aiohttp==3.13.3 +scikit-learn==1.7.2 +nvidia-cutlass-dsl==4.4.0 +setuptools==82.0.0 +jupyter_core==5.9.1 +asyncio==4.0.0 +einops==0.8.2 +pydantic==2.12.5 +av==16.1.0 +protobuf==6.33.5 +evaluate==0.4.6 +Jinja2==3.1.6 +exceptiongroup==1.3.1 +ipython==8.38.0 +sentry-sdk==2.53.0 +httpx==0.28.1 +msgpack==1.1.2 +platformdirs==4.9.2 +hjson==3.1.0 +torchvision==0.21.0 +parso==0.8.6 +cuda-bindings==13.1.1 +pexpect==4.9.0 +threadpoolctl==3.6.0 +pyarrow==23.0.1 +jedi==0.19.2 +nvidia-cuda-nvrtc-cu12==12.4.127 +Werkzeug==3.1.5 +fsspec==2025.10.0 +pydantic_core==2.41.5 +GitPython==3.1.46 +propcache==0.4.1 +mpmath==1.3.0 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-cusparse-cu12==12.3.1.170 +hf-xet==1.2.0 +charset-normalizer==3.4.4 +dill==0.4.0 +datasets==4.5.0 +py-cpuinfo==9.0.0 +sentencepiece==0.2.1 +latex2sympy2_extended==1.11.0 +jupyter_client==8.8.0 +pyzmq==27.1.0 +numpy==2.2.6 +gitdb==4.0.12 +grpcio==1.78.0 +packaging==26.0 +requests==2.32.5 +nvidia-cudnn-cu12==9.1.0.70 +httpcore==1.0.9 +traitlets==5.14.3 +filelock==3.24.2 +ptyprocess==0.7.0 +pillow==12.1.1 +torch==2.6.0 +more-itertools==10.8.0 +wheel==0.46.3 +jaraco.text==4.0.0 +zipp==3.23.0 +autocommand==2.2.2 +jaraco.context==6.1.0 +jaraco.functools==4.4.0 +tomli==2.4.0 +backports.tarfile==1.2.0 +importlib_metadata==8.7.1 +platformdirs==4.4.0 +packaging==26.0 diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-metadata.json b/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..d0aec2d49a38ed0088e3f08ed12ef391ec7ff852 --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-metadata.json @@ -0,0 +1,26 @@ +{ + "os": "Linux-5.15.0-144-generic-x86_64-with-glibc2.35", + "python": "CPython 3.10.19", + "startedAt": "2026-06-02T09:24:41.968601Z", + "args": [ + "config=../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml", + "wandb.run_id=w3wdpl8c", + "experiment.function=train", + "evaluation.block_size=None", + "evaluation.top_k=None", + "evaluation.remasking_strategy=None", + "experiment.current_epoch=10" + ], + "program": "/data4/runqing/dLLM-RL/reward/rl_reward_video_reversal.py", + "codePath": "reward/rl_reward_video_reversal.py", + "codePathLocal": "rl_reward_video_reversal.py", + "git": { + "remote": "https://gitclone.com/github.com/Gen-Verse/dLLM-RL.git", + "commit": "10b4fd1cba83e4496c20585dc2fd01dc02f20255" + }, + "email": "shixi_runqing@staff.weibo.com", + "root": "/data4/runqing/dLLM-RL/reward", + "host": "b1301b38c75f", + "executable": "/data8/runqing/miniconda/envs/dllm-rl/bin/python", + "writerId": "xvb1lk1cnls4lggnap8yupkndjuv02j1" +} \ No newline at end of file diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-summary.json b/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-summary.json new file mode 100644 index 0000000000000000000000000000000000000000..17f457490e8169f9dcfb007c5c460a6f21768257 --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-summary.json @@ -0,0 +1 @@ +{"reward/avg_response_length":35.435546875,"reward/acc":0.03515625,"train/loss":0.3788445591926574,"train/learning_rate":8.628481651367888e-08,"reward/train_step":3,"_step":10,"reward/unbiased_bonus":0.01875,"_wandb":{"runtime":4615},"reward/t_grpo_bonus":0.3000000000000004,"_timestamp":1.780382672555827e+09,"_runtime":4615} \ No newline at end of file diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-core.log b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-core.log new file mode 100644 index 0000000000000000000000000000000000000000..6e07e02f614ccf15c3bd4c47645ec016e4ede1bd --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-core.log @@ -0,0 +1,18 @@ +{"time":"2026-06-02T17:24:42.051994418+08:00","level":"INFO","msg":"main: starting server","port-filename":"/tmp/tmp9gvuswm2/port-1294603.txt","pid":1294603,"log-level":0,"disable-analytics":false,"shutdown-on-parent-exit":false,"enable-dcgm-profiling":false} +{"time":"2026-06-02T17:24:42.052980729+08:00","level":"INFO","msg":"server: will exit if parent process dies","ppid":1294603} +{"time":"2026-06-02T17:24:42.05295701+08:00","level":"INFO","msg":"server: accepting connections","addr":{"Name":"/tmp/wandb-1294603-1294761-507784124/socket","Net":"unix"}} +{"time":"2026-06-02T17:24:42.225502385+08:00","level":"INFO","msg":"connection: ManageConnectionData: new connection created","id":"1(@)"} +{"time":"2026-06-02T17:24:42.234398108+08:00","level":"INFO","msg":"handleInformInit: received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T17:24:42.944982861+08:00","level":"INFO","msg":"handleInformInit: stream started","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T17:24:43.401648341+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tvbnpmm4a3rj"} +{"time":"2026-06-02T17:24:43.584902187+08:00","level":"INFO","msg":"connection: cancelling request","id":"1(@)","requestId":"tvbnpmm4a3rj"} +{"time":"2026-06-02T17:24:43.585467549+08:00","level":"INFO","msg":"handleInformFinish: finish message received","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T17:24:43.586306121+08:00","level":"INFO","msg":"handleInformFinish: stream closed","streamId":"w3wdpl8c","id":"1(@)"} +{"time":"2026-06-02T17:24:43.586325154+08:00","level":"INFO","msg":"handleInformTeardown: server teardown initiated","id":"1(@)"} +{"time":"2026-06-02T17:24:43.58633788+08:00","level":"INFO","msg":"handleInformTeardown: server shutdown complete","id":"1(@)"} +{"time":"2026-06-02T17:24:43.58634693+08:00","level":"INFO","msg":"connection: closing","id":"1(@)"} +{"time":"2026-06-02T17:24:43.586358575+08:00","level":"INFO","msg":"server is shutting down"} +{"time":"2026-06-02T17:24:43.586387557+08:00","level":"INFO","msg":"connection: closed successfully","id":"1(@)"} +{"time":"2026-06-02T17:24:43.58640622+08:00","level":"INFO","msg":"connection: ManageConnectionData: connection closed","id":"1(@)"} +{"time":"2026-06-02T17:24:43.586544679+08:00","level":"INFO","msg":"server: listener closed","addr":{"Name":"/tmp/wandb-1294603-1294761-507784124/socket","Net":"unix"}} +{"time":"2026-06-02T17:24:43.586605076+08:00","level":"INFO","msg":"server is closed"} diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-internal.log b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-internal.log new file mode 100644 index 0000000000000000000000000000000000000000..c5064e2c0770149c7ce46761e3504bb565e86411 --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-internal.log @@ -0,0 +1,28 @@ +{"time":"2026-06-02T17:24:42.234571344+08:00","level":"INFO","msg":"stream: starting","core version":"0.25.0"} +{"time":"2026-06-02T17:24:42.944524547+08:00","level":"ERROR","msg":"featurechecker: failed to load features, all will be disabled","error":"input:4:3: Cannot query field \"features\" on type \"ServerInfo\".\n"} +{"time":"2026-06-02T17:24:42.944677241+08:00","level":"INFO","msg":"stream: created new stream","id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:42.944745457+08:00","level":"INFO","msg":"handler: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:42.944959733+08:00","level":"INFO","msg":"stream: started","id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:42.945007497+08:00","level":"INFO","msg":"writer: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:42.945007633+08:00","level":"INFO","msg":"sender: started","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:42.95026804+08:00","level":"WARN","msg":"runupserter: server does not expand metric globs but the x_server_side_expand_glob_metrics setting is set; ignoring"} +{"time":"2026-06-02T17:24:43.164047313+08:00","level":"ERROR","msg":"git repo not found","error":"repository does not exist"} +{"time":"2026-06-02T17:24:43.40037441+08:00","level":"WARN","msg":"handler: ignoring partial history record","step":10,"current":11} +{"time":"2026-06-02T17:24:43.527418509+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f477cbfaf3c796f63c2c6b147923637aa9d39c2ef165397e00f0347b4aedcfbb"} +{"time":"2026-06-02T17:24:43.527558674+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json18B53959535DED314b5cbd82-31a6-4e32-8e3a-3b4f1cd8a94b","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-summary.json, Name: wandb-summary.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-summary.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=f477cbfaf3c796f63c2c6b147923637aa9d39c2ef165397e00f0347b4aedcfbb, Size: 326}"} +{"time":"2026-06-02T17:24:43.531978077+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2d22c426c3a8cb3df871d4138ec60c5e5863a0764dc67fa7be018af066eb507d"} +{"time":"2026-06-02T17:24:43.532064488+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.lognetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log18B5395954F87C9F29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/output.log, Name: output.log, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/output.log?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=2d22c426c3a8cb3df871d4138ec60c5e5863a0764dc67fa7be018af066eb507d, Size: 110}"} +{"time":"2026-06-02T17:24:43.532234165+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=954de03a03bdd5dbb57e0157732c203c0acc96a16b859757224290347990c459"} +{"time":"2026-06-02T17:24:43.532379214+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0509f173707f2892defb0f21c9e2e6c47bb334b7b458a0787438c6958e4d6dea"} +{"time":"2026-06-02T17:24:43.532364657+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.jsonnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json18B53959531774C617e81bf8-654d-4ce6-b556-0f7349513ee1","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/wandb-metadata.json, Name: wandb-metadata.json, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/wandb-metadata.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=954de03a03bdd5dbb57e0157732c203c0acc96a16b859757224290347990c459, Size: 990}"} +{"time":"2026-06-02T17:24:43.532521566+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yamlnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml18B53959551314DE29678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/config.yaml, Name: config.yaml, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/config.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=0509f173707f2892defb0f21c9e2e6c47bb334b7b458a0787438c6958e4d6dea, Size: 5727}"} +{"time":"2026-06-02T17:24:43.533561577+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=de1893dd09a59cfaee0fc988032544ba670e5cfec6f34267ca7c684af523dd17"} +{"time":"2026-06-02T17:24:43.533727454+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txtnetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt18B539595512B80629678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/requirements.txt, Name: requirements.txt, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/requirements.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=de1893dd09a59cfaee0fc988032544ba670e5cfec6f34267ca7c684af523dd17, Size: 2982}"} +{"time":"2026-06-02T17:24:43.537320756+08:00","level":"ERROR","msg":"api: HTTP error","status":403,"method":"PUT","url":"http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5d66cb946d0534a86d8c42f5746a6dcc029fe6851157d4b20ce1469e3e0430db"} +{"time":"2026-06-02T17:24:43.537446239+08:00","level":"ERROR","msg":"file transfer: upload: failed to upload: status: 403 Forbidden: body: \nSignatureDoesNotMatchThe request signature we calculated does not match the signature you provided. Check your key and signing method.shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.pynetdisk/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py18B5395954E3503729678716-7d96-4915-b26c-b7113941467d","task":"DefaultUploadTask{FileKind: 1, Path: /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/files/code/reward/rl_reward_video_reversal.py, Name: code/reward/rl_reward_video_reversal.py, Url: http://jfs-s3-gateway.wml.weibo.com:80/netdisk/shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c/code/reward/rl_reward_video_reversal.py?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260602%2Fregion%2Fs3%2Faws4_request&X-Amz-Date=20260602T092443Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-User=shixi_runqing&X-Amz-Signature=5d66cb946d0534a86d8c42f5746a6dcc029fe6851157d4b20ce1469e3e0430db, Size: 14790}"} +{"time":"2026-06-02T17:24:43.53774191+08:00","level":"INFO","msg":"fileTransfer: Close: file transfer manager closed"} +{"time":"2026-06-02T17:24:43.580386285+08:00","level":"INFO","msg":"handler: operation stats","stats":{}} +{"time":"2026-06-02T17:24:43.585495443+08:00","level":"INFO","msg":"stream: closing","id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:43.585516293+08:00","level":"INFO","msg":"handler: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:43.585603233+08:00","level":"INFO","msg":"sender: closed","stream_id":"w3wdpl8c"} +{"time":"2026-06-02T17:24:43.585618153+08:00","level":"INFO","msg":"stream: closed","id":"w3wdpl8c"} diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug.log b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug.log new file mode 100644 index 0000000000000000000000000000000000000000..6e16ecb92b668305075c15a5df00b82d2ab3258c --- /dev/null +++ b/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug.log @@ -0,0 +1,25 @@ +2026-06-02 17:24:41,971 INFO MainThread:1294603 [wandb_setup.py:_flush():81] Current SDK version is 0.25.0 +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_setup.py:_flush():81] Configure stats pid to 1294603 +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_setup.py:_flush():81] Loading settings from environment variables +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_init.py:setup_run_log_directory():717] Logging user logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug.log +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_init.py:setup_run_log_directory():718] Logging internal logs to /data4/runqing/dLLM-RL/reward/wandb/run-20260602_172441-w3wdpl8c/logs/debug-internal.log +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_init.py:init():844] calling init triggers +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_init.py:init():849] wandb.init called with sweep_config: {} +config: {'wandb.entity': None, 'wandb.resume': 'auto', 'wandb.run_id': 'w3wdpl8c', 'system.HTTP_PROXY': None, 'system.HF_HOME': None, 'system.env_name': '/data8/runqing/miniconda/envs/dllm-rl', 'system.envs_dir': '/data8/runqing/miniconda/envs/dllm-rl', 'system.base_dir': '/data4/runqing/dLLM-RL', 'experiment.project': 'rl_lavida_revvideo_orig10k_4gpu_len128', 'experiment.function': 'train', 'experiment.start_from_scratch': True, 'experiment.total_step': 10, 'experiment.save_every': 5, 'experiment.eval_every': 5, 'experiment.current_epoch': 10, 'experiment.deepspeed_file': '1_node_8_gpus_deepspeed_zero2', 'experiment.num_node': 1, 'experiment.node_index': 0, 'model.pretrained_model': '/data4/runqing/hf/lavida-llada-v1.0-instruct', 'model.optimized_name': 'optimized', 'model.model_base': 'lavida', 'model.vq_model_path': '/data4/runqing/hf/magvitv2', 'model.image_resolution': 512, 'dataset.train_dataset': 'video_reversal_sft_train_cleaned_10k', 'dataset.data_type': 'video_reverse', 'dataset.optimization_data': 'rl_data', 'rollout.num_task_per_step': 128, 'rollout.num_response_per_task': 8, 'rollout.temperature': 0.8, 'rollout.steps': 128, 'rollout.max_gen_length': 128, 'rollout.batch_size': 1, 'rollout.remasking_strategy': 'low_confidence_dynamic', 'rollout.target': 'confidence', 'rollout.dynamic_threshold': 0.9, 'rollout.block_size': 32, 'rollout.further_horizon': 128, 'rollout.use_cache': True, 'reward.answer_must_in_box': True, 'reward.strict_len_check': False, 'execute.num_chunk': 128, 'training.gradient_accumulation_steps': 2, 'training.batch_size_lm': 1, 'training.mixed_precision': 'bf16', 'training.enable_tf32': True, 'training.seed': 10086, 'training.num_train_epochs': 1, 'training.max_grad_norm': 1.0, 'training.method': 'random_masking', 'training.lower_p': 0.35, 'training.upper_p': 0.9, 'training.shrink': 8, 'training.post_num': 1, 'training.mask_times_per_sample': 2, 'training.max_gen_length': 128, 'training.max_prompt_len': 512, 'training.eps': 0.2, 'training.beta': 0.05, 'training.use_kl_estimator_k3': True, 'optimizer.name': 'adamw', 'optimizer.params.learning_rate': 5e-07, 'optimizer.params.scale_lr': False, 'optimizer.params.beta1': 0.9, 'optimizer.params.beta2': 0.999, 'optimizer.params.weight_decay': 0.0, 'optimizer.params.epsilon': 1e-08, 'lr_scheduler.scheduler': 'cosine', 'lr_scheduler.params.learning_rate': 5e-07, 'lr_scheduler.params.warmup_steps': 0, 'lr_scheduler.params.min_lr_scale': 1.0, 'evaluation.if_eval': False, 'evaluation.eval_dataset': 'video_reversal_rl_eval', 'evaluation.data_type': 'video_reverse', 'evaluation.num_response_per_task': 3, 'evaluation.temperature': 0.1, 'evaluation.steps': 128, 'evaluation.max_gen_length': 128, 'evaluation.batch_size': 1, 'evaluation.remasking_strategy': 'None', 'evaluation.target': 'confidence', 'evaluation.dynamic_threshold': 0.9, 'evaluation.block_size': 'None', 'evaluation.further_horizon': 128, 'evaluation.use_cache': True, 'evaluation.top_k': 'None', 'config': '../configs/rl_lavida_revvideo_orig10k_4gpu_len128.yaml', '_wandb': {'code_path': 'code/reward/rl_reward_video_reversal.py'}} +2026-06-02 17:24:41,972 INFO MainThread:1294603 [wandb_init.py:init():892] starting backend +2026-06-02 17:24:42,225 INFO MainThread:1294603 [wandb_init.py:init():895] sending inform_init request +2026-06-02 17:24:42,232 INFO MainThread:1294603 [wandb_init.py:init():903] backend started and connected +2026-06-02 17:24:42,234 INFO MainThread:1294603 [wandb_init.py:init():973] updated telemetry +2026-06-02 17:24:42,239 INFO MainThread:1294603 [wandb_init.py:init():997] communicating run to backend with 90.0 second timeout +2026-06-02 17:24:43,158 INFO MainThread:1294603 [wandb_init.py:init():1037] run resumed +2026-06-02 17:24:43,162 INFO MainThread:1294603 [wandb_init.py:init():1042] starting run threads in backend +2026-06-02 17:24:43,258 INFO MainThread:1294603 [wandb_run.py:_console_start():2524] atexit reg +2026-06-02 17:24:43,258 INFO MainThread:1294603 [wandb_run.py:_redirect():2373] redirect: wrap_raw +2026-06-02 17:24:43,258 INFO MainThread:1294603 [wandb_run.py:_redirect():2442] Wrapping output streams. +2026-06-02 17:24:43,258 INFO MainThread:1294603 [wandb_run.py:_redirect():2465] Redirects installed. +2026-06-02 17:24:43,262 INFO MainThread:1294603 [wandb_init.py:init():1082] run started, returning control to user process +2026-06-02 17:24:43,400 INFO MainThread:1294603 [wandb_run.py:_finish():2291] finishing run shixi_runqing/rl_lavida_revvideo_orig10k_4gpu_len128/w3wdpl8c +2026-06-02 17:24:43,400 INFO MainThread:1294603 [wandb_run.py:_atexit_cleanup():2490] got exitcode: 0 +2026-06-02 17:24:43,401 INFO MainThread:1294603 [wandb_run.py:_restore():2472] restore +2026-06-02 17:24:43,401 INFO MainThread:1294603 [wandb_run.py:_restore():2478] restore done +2026-06-02 17:24:43,584 INFO MainThread:1294603 [wandb_run.py:_footer_sync_info():3868] logging synced files diff --git a/reward/wandb/run-20260602_172441-w3wdpl8c/run-w3wdpl8c.wandb b/reward/wandb/run-20260602_172441-w3wdpl8c/run-w3wdpl8c.wandb new file mode 100644 index 0000000000000000000000000000000000000000..4cdefd660bc441a78c5454bf811a3a3005e386b9 Binary files /dev/null and b/reward/wandb/run-20260602_172441-w3wdpl8c/run-w3wdpl8c.wandb differ