|
| 1 | +name: Trace the Ace V78 seismic semantic |
| 2 | + |
| 3 | +on: |
| 4 | + workflow_dispatch: |
| 5 | + push: |
| 6 | + branches: [agent/trace-ace-mastery-events] |
| 7 | + paths: |
| 8 | + - "competitions/trace_the_ace/v78_seismic_semantic.py" |
| 9 | + - ".github/workflows/trace-ace-v78-seismic.yml" |
| 10 | + |
| 11 | +jobs: |
| 12 | + seismic: |
| 13 | + runs-on: ubuntu-latest |
| 14 | + timeout-minutes: 360 |
| 15 | + env: |
| 16 | + TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID: 1nOjremWhpZ_QKSLvZfGcNkS_C3kMMBUI |
| 17 | + TRACE_ACE_METADATA_DRIVE_FILE_ID: 1EpqoamY0vFI2qE57R6wdqU5HwuoVk3Zz |
| 18 | + steps: |
| 19 | + - uses: actions/checkout@v4 |
| 20 | + - uses: actions/setup-python@v5 |
| 21 | + with: |
| 22 | + python-version: "3.12" |
| 23 | + cache: pip |
| 24 | + - name: Install dependencies |
| 25 | + run: python -m pip install --disable-pip-version-check numpy pandas scipy scikit-learn gdown sentence-transformers torch |
| 26 | + - name: Download data |
| 27 | + shell: bash |
| 28 | + run: | |
| 29 | + set -euo pipefail |
| 30 | + mkdir -p /tmp/trace_ace/meta /tmp/trace_ace/transcripts |
| 31 | + python - <<'PY' |
| 32 | + import os,gdown |
| 33 | + if not gdown.download(id=os.environ['TRACE_ACE_METADATA_DRIVE_FILE_ID'],output='/tmp/meta.zip',quiet=False): raise SystemExit('metadata download failed') |
| 34 | + if not gdown.download(id=os.environ['TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID'],output='/tmp/transcripts.zip',quiet=False): raise SystemExit('transcript download failed') |
| 35 | + PY |
| 36 | + unzip -q /tmp/meta.zip -d /tmp/trace_ace/meta |
| 37 | + unzip -q /tmp/transcripts.zip -d /tmp/trace_ace/transcripts |
| 38 | + - name: Resolve schemas |
| 39 | + shell: bash |
| 40 | + run: | |
| 41 | + python - <<'PY' |
| 42 | + import csv,shlex |
| 43 | + from pathlib import Path |
| 44 | + features=labels=td=None |
| 45 | + for root in [Path('/tmp/trace_ace/meta'),Path('/tmp/trace_ace/transcripts')]: |
| 46 | + for p in root.rglob('*.csv'): |
| 47 | + try: |
| 48 | + with p.open('r',encoding='utf-8-sig',errors='ignore',newline='') as f: h=next(csv.reader(f)) |
| 49 | + except Exception: continue |
| 50 | + c=set(h) |
| 51 | + if features is None and {'response_id','session_id','learning_objective'}.issubset(c): features=p; print('FEATURE HEADER',h) |
| 52 | + if labels is None and 'response_id' in c and ('is_correct' in c or 'correct' in c): labels=p; print('LABEL HEADER',h) |
| 53 | + if td is None and {'session_id','utterance_id','role','content','timestamp'}.issubset(c): td=p.parent; print('TRANSCRIPT HEADER',h) |
| 54 | + if not all([features,labels,td]): raise SystemExit('schema discovery failed') |
| 55 | + with open('/tmp/paths.env','w') as f: |
| 56 | + f.write('FEATURES='+shlex.quote(str(features))+'\nLABELS='+shlex.quote(str(labels))+'\nTRANSCRIPTS='+shlex.quote(str(td))+'\n') |
| 57 | + PY |
| 58 | + - name: Run V78 MiniLM seismic test |
| 59 | + shell: bash |
| 60 | + env: |
| 61 | + TOKENIZERS_PARALLELISM: "false" |
| 62 | + run: | |
| 63 | + set -euo pipefail |
| 64 | + source /tmp/paths.env |
| 65 | + python competitions/trace_the_ace/v78_seismic_semantic.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v78_seismic_semantic.json |
| 66 | + - name: Upload aggregate result |
| 67 | + uses: actions/upload-artifact@v4 |
| 68 | + with: |
| 69 | + name: trace-ace-v78-seismic-result |
| 70 | + path: v78_seismic_semantic.json |
| 71 | + retention-days: 14 |
0 commit comments