kaiju-coder-7-opencode / scripts /upload_hf_merged_model_from_gojira_b.sh
restokes92's picture
Upload Kaiju Coder 7 OpenCode helper package
89ef4db verified
Raw
History Blame Contribute Delete
4.09 kB
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
# shellcheck source=scripts/gojira-b-ssh-lib.sh
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}
"