init: tianyan-edge edge agent with Ascend NPU inference backend
- Go main process: stream ingestor, infer client, event uploader, heartbeat, config agent, OTA agent - Python inference server rewritten to use CANN ACL (acl module) replacing ultralytics/PyTorch; supports YOLOv8 raw and YOLOv10 NMS-free output formats via OUTPUT_FORMAT env var - systemd services for edge-agent and edge-infer - build/install/package scripts targeting arm64 Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
11
scripts/build.sh
Normal file
11
scripts/build.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
BUILD_DIR="$ROOT_DIR/build"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \
|
||||
go build -o "$BUILD_DIR/edge-agent" "$ROOT_DIR/cmd/edge-agent"
|
||||
|
||||
echo "built: $BUILD_DIR/edge-agent"
|
||||
27
scripts/install.sh
Normal file
27
scripts/install.sh
Normal file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PREFIX=/opt/tianyan-edge
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
||||
|
||||
sudo mkdir -p "$PREFIX"/{bin,python,config,systemd,staging,model}
|
||||
sudo install -m 755 "$ROOT_DIR/build/edge-agent" "$PREFIX/bin/edge-agent"
|
||||
sudo install -m 644 "$ROOT_DIR/python/infer_server.py" "$PREFIX/python/infer_server.py"
|
||||
sudo install -m 644 "$ROOT_DIR/python/requirements.txt" "$PREFIX/python/requirements.txt"
|
||||
|
||||
if [ ! -f "$PREFIX/config/edge.yaml" ]; then
|
||||
sudo install -m 644 "$ROOT_DIR/config/edge.yaml.template" "$PREFIX/config/edge.yaml"
|
||||
fi
|
||||
|
||||
sudo install -m 644 "$ROOT_DIR/systemd/edge-agent.service" /etc/systemd/system/edge-agent.service
|
||||
sudo install -m 644 "$ROOT_DIR/systemd/edge-infer.service" /etc/systemd/system/edge-infer.service
|
||||
|
||||
sudo "$PYTHON_BIN" -m pip install -r "$PREFIX/python/requirements.txt"
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable edge-infer.service edge-agent.service
|
||||
sudo systemctl restart edge-infer.service edge-agent.service
|
||||
|
||||
echo "installed to $PREFIX"
|
||||
19
scripts/package-usb.sh
Normal file
19
scripts/package-usb.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
DIST_DIR="$ROOT_DIR/dist"
|
||||
PKG_NAME="tianyan-edge-$(date +%Y%m%d-%H%M%S)"
|
||||
PKG_DIR="$DIST_DIR/$PKG_NAME"
|
||||
|
||||
mkdir -p "$PKG_DIR"
|
||||
cp -r "$ROOT_DIR/build" "$PKG_DIR/"
|
||||
cp -r "$ROOT_DIR/python" "$PKG_DIR/"
|
||||
cp -r "$ROOT_DIR/systemd" "$PKG_DIR/"
|
||||
cp -r "$ROOT_DIR/config" "$PKG_DIR/"
|
||||
cp -r "$ROOT_DIR/scripts/install.sh" "$ROOT_DIR/scripts/uninstall.sh" "$PKG_DIR/"
|
||||
|
||||
cd "$DIST_DIR"
|
||||
tar -czf "$PKG_NAME.tar.gz" "$PKG_NAME"
|
||||
|
||||
echo "usb package ready: $DIST_DIR/$PKG_NAME.tar.gz"
|
||||
10
scripts/uninstall.sh
Normal file
10
scripts/uninstall.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
sudo systemctl stop edge-agent.service edge-infer.service || true
|
||||
sudo systemctl disable edge-agent.service edge-infer.service || true
|
||||
sudo rm -f /etc/systemd/system/edge-agent.service /etc/systemd/system/edge-infer.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo rm -rf /opt/tianyan-edge
|
||||
|
||||
echo "uninstalled /opt/tianyan-edge"
|
||||
Reference in New Issue
Block a user