| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" |
| |
| source "${SCRIPT_DIR}/gojira-b-ssh-lib.sh" |
| kaiju_gojira_b_init |
|
|
| NAMESPACE="${KAIJU_HF_NAMESPACE:-RMDWLLC}" |
| REPO_ID="${KAIJU_HF_MERGED_REPO:-${NAMESPACE}/kaiju-coder-7}" |
| MODEL_REMOTE="${KAIJU_MERGED_MODEL_REMOTE:-/home/richardecholsai5/kaiju-coder/models/Kaiju-Coder-Qwen3.6-27B-v1.8-merged}" |
| VISIBILITY="${KAIJU_HF_VISIBILITY:-private}" |
| APPLY="${KAIJU_HF_UPLOAD_APPLY:-0}" |
|
|
| usage() { |
| cat <<'USAGE' |
| Dry-run or upload the merged Kaiju Coder 7 model from Gojira-B to Hugging Face. |
|
|
| This script is dry-run by default. Set KAIJU_HF_UPLOAD_APPLY=1 only after: |
|
|
| - human review is complete |
| - Hugging Face CLI is installed on Gojira-B |
| - `hf auth whoami` on Gojira-B shows the intended account |
| - upstream license/provenance docs have been reviewed |
|
|
| Environment: |
| KAIJU_HF_MERGED_REPO repo id, default RMDWLLC/kaiju-coder-7 |
| KAIJU_HF_NAMESPACE Hugging Face namespace, default RMDWLLC |
| KAIJU_MERGED_MODEL_REMOTE model dir on Gojira-B |
| KAIJU_HF_VISIBILITY private or public, default private |
| KAIJU_HF_UPLOAD_APPLY 0 dry-run, 1 execute |
| USAGE |
| } |
|
|
| if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then |
| usage |
| exit 0 |
| fi |
|
|
| case "${VISIBILITY}" in |
| private|public) ;; |
| *) echo "KAIJU_HF_VISIBILITY must be private or public, got: ${VISIBILITY}" >&2; exit 2 ;; |
| esac |
|
|
| private_flag="" |
| if [[ "${VISIBILITY}" == "private" ]]; then |
| private_flag="--private" |
| fi |
|
|
| if [[ "${APPLY}" == "1" ]]; then |
| review_args=(--mode public --require-merged-upload) |
| if [[ "${VISIBILITY}" == "public" ]]; then |
| review_args+=(--require-public-visibility) |
| fi |
| python3 "${ROOT}/scripts/check_human_release_review.py" "${review_args[@]}" |
| fi |
|
|
| kaiju_gojira_b_ssh " |
| set -euo pipefail |
| export PATH=\"\$HOME/.local/bin:\$PATH\" |
| test -d '${MODEL_REMOTE}' || { echo 'Missing merged model: ${MODEL_REMOTE}' >&2; exit 2; } |
| test -f '${MODEL_REMOTE}/config.json' || { echo 'Missing config.json in ${MODEL_REMOTE}' >&2; exit 2; } |
| test -f '${MODEL_REMOTE}/tokenizer_config.json' || { echo 'Missing tokenizer_config.json in ${MODEL_REMOTE}' >&2; exit 2; } |
| for required in \ |
| README.md \ |
| PUBLIC_TESTING_QUICKSTART.md \ |
| LOCAL_TEST_INSTRUCTIONS.md \ |
| SERVING_BENCHMARKS.md \ |
| EVAL_SCOREBOARD.md \ |
| DATA_PROVENANCE_DRAFT.md \ |
| SOURCE_INVENTORY.md \ |
| UPSTREAM_LICENSE_CHECK.md \ |
| PAID_API_READINESS.md \ |
| FINAL_RELEASE_REPORT.md \ |
| GOAL_COMPLETION_AUDIT.md \ |
| HF_UPLOAD_EVIDENCE.md \ |
| assets/RMDWlogo.png \ |
| MERGED_MODEL_RELEASE_MANIFEST.json \ |
| upstream/qwen3.6-27b/LICENSE; do |
| test -f '${MODEL_REMOTE}/'\${required} || { |
| echo \"Missing merged-model metadata: \${required}\" >&2 |
| echo 'Run: KAIJU_MERGED_METADATA_APPLY=1 bash scripts/prepare_hf_merged_model_metadata.sh' >&2 |
| exit 2 |
| } |
| done |
| shard_count=\$(find '${MODEL_REMOTE}' -maxdepth 1 -name '*.safetensors' | wc -l | tr -d ' ') |
| if [[ \"\${shard_count}\" -lt 1 ]]; then |
| echo 'No safetensors shards found in ${MODEL_REMOTE}' >&2 |
| exit 2 |
| fi |
| size=\$(du -sh '${MODEL_REMOTE}' | awk '{print \$1}') |
| echo 'Merged model: ${MODEL_REMOTE}' |
| echo \"Size: \${size}; safetensors shards: \${shard_count}\" |
| echo 'Metadata: present' |
| echo 'Repo: ${REPO_ID}' |
| echo 'Visibility: ${VISIBILITY}' |
| echo |
| echo 'Commands:' |
| echo 'hf repos create ${REPO_ID} --type model ${private_flag} --exist-ok' |
| echo 'hf upload-large-folder ${REPO_ID} ${MODEL_REMOTE} --type model ${private_flag}' |
| if [[ '${APPLY}' != '1' ]]; then |
| echo |
| echo 'Dry run. Set KAIJU_HF_UPLOAD_APPLY=1 to execute.' |
| exit 0 |
| fi |
| if ! command -v hf >/dev/null 2>&1; then |
| echo 'Missing Hugging Face CLI on Gojira-B: hf' >&2 |
| echo 'Install: curl -LsSf https://hf.co/cli/install.sh | bash -s' >&2 |
| exit 2 |
| fi |
| hf auth whoami >/dev/null |
| hf repos create '${REPO_ID}' --type model ${private_flag} --exist-ok |
| hf upload-large-folder '${REPO_ID}' '${MODEL_REMOTE}' --type model ${private_flag} |
| " |
|
|