first commit

This commit is contained in:
HenryChou020514
2026-07-07 19:03:00 +08:00
commit 6edf7da2b7
158 changed files with 771425 additions and 0 deletions

View File

@ -0,0 +1,100 @@
#!/bin/bash
set -euo pipefail
CONDA_BIN=${CONDA_BIN:-}
if [ -z "$CONDA_BIN" ]; then
if command -v conda >/dev/null 2>&1; then
CONDA_BIN=$(command -v conda)
elif [ -x /opt/miniconda/bin/conda ]; then
CONDA_BIN=/opt/miniconda/bin/conda
fi
fi
if [ -n "$CONDA_BIN" ]; then
eval "$("$CONDA_BIN" shell.bash hook)"
conda activate focallora
else
echo "[Ident_verb_test_dataset.sh] Warning: conda not found; running in current environment." >&2
fi
SCRIPT_DIR="$(cd -- "$(dirname "$0")" && pwd)"
export PYTHONPATH="$SCRIPT_DIR${PYTHONPATH:+:$PYTHONPATH}"
export IGNORE_REASONING_MESSAGES="${IGNORE_REASONING_MESSAGES:-1}"
TRAJ_PATH="${TRAJ_PATH:-/data/local/hujk/BUTTON/crafted_data/attack_dh_traj.jsonl}"
TOKENIZER_PATH="${TOKENIZER_PATH:-/data/local/hujk/models/Qwen3-8B}"
python3 - <<'PY'
import json
import os
from pathlib import Path
from transformers import AutoTokenizer
from lib_tokenize_data_mask import (
apply_chat_with_tokenize_with_mark,
apply_chat_with_tokenize_original,
filter_reasoning_messages,
is_ignore_reasoning_enabled,
strip_markers,
)
traj_path = Path(os.getenv("TRAJ_PATH", "/data/local/hujk/BUTTON/crafted_data/attack_dh_traj.jsonl"))
tokenizer_path = os.getenv("TOKENIZER_PATH", "/data/local/hujk/models/Qwen3-8B")
first_line = traj_path.read_text().splitlines()[0]
record = json.loads(first_line)
messages = record["trajectory"]
tools = record.get("tools")
ignore_flag = is_ignore_reasoning_enabled()
filtered = filter_reasoning_messages(messages, ignore_flag)
# Sanitize contents to strings for deterministic rendering.
sanitized = []
for m in filtered:
m = dict(m)
if m.get("content") is None:
m["content"] = ""
elif not isinstance(m.get("content"), str):
m["content"] = json.dumps(m["content"])
sanitized.append(m)
print(f"IGNORE_REASONING_MESSAGES={ignore_flag}")
print(f"Messages: original={len(messages)} filtered={len(filtered)}")
print(
"Reasoning messages removed:",
len([m for m in messages if "reasoning_content" in m]) - len(
[m for m in filtered if "reasoning_content" in m]
),
)
tok = AutoTokenizer.from_pretrained(tokenizer_path)
if tok.pad_token is None:
tok.pad_token = tok.eos_token
input_ids, instr_mask, data_mask, segment_type, is_normal_token, _custom_mask, rendered = apply_chat_with_tokenize_with_mark(
sanitized, tok, tools=tools
)
orig_ids, orig_render = apply_chat_with_tokenize_original(sanitized, tok, tools=tools)
print(f"Token count: {len(input_ids)}")
print(f"Instruction tokens: {sum(instr_mask)}")
print(f"Data tokens: {sum(data_mask)}")
print(f"Segment labels present: {sorted(set(segment_type))}")
print(f"input_ids match original: {input_ids == orig_ids}")
print("\nRendered preview with markers (first 300 chars):")
print(rendered[:300])
cleaned = strip_markers(rendered)
print("\nRendered preview (markers stripped, first 300 chars):")
print(cleaned[:300])
# Detailed token/mask dump
tokens = [tok.decode(t).replace("\n","\\n") for t in input_ids]
print("\nidx\tinstr\tdata\tseg\tnorm\ttoken")
for i, (t, im, dm, seg, norm) in enumerate(zip(tokens, instr_mask, data_mask, segment_type, is_normal_token)):
print(f"{i}\t{int(im)}\t{int(dm)}\t{seg}\t{int(norm)}\t{t}")
print("\n--- Original apply_chat_template + tokenizer ---")
orig_tokens = tok.convert_ids_to_tokens(orig_ids)
for i, t in enumerate(orig_tokens[:50]):
human = tok.convert_tokens_to_string([t]) or t
print(f"{i}\t{human}")
PY