Skip to content

Commit 9bae600

Browse files
committed
naive32 memory
1 parent 2511813 commit 9bae600

2 files changed

Lines changed: 306 additions & 120 deletions

File tree

.github/workflows/ci.yml

Lines changed: 128 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -375,25 +375,28 @@ jobs:
375375
fail-fast: false
376376
matrix:
377377
model: [googlenet, densenet, resnet, yolo]
378-
parallel_flag: ["--parallel tbb 1000", "--parallel tbb 10000"]
379378
include:
380379
- model: googlenet
381380
parser: parser_onnx.py
382381
model_file: GoogLeNet.onnx
383382
model_path: docs/models/GoogLeNet.onnx
384383
model_url: ''
384+
extra_args: "32"
385385
- model: densenet
386386
parser: parser_onnx.py
387387
model_file: densenet121_Opset16.onnx
388388
model_url: https://github.com/onnx/models/raw/refs/heads/main/Computer_Vision/densenet121_Opset16_timm/densenet121_Opset16.onnx?download=
389+
extra_args: "32"
389390
- model: resnet
390391
parser: parser_onnx.py
391392
model_file: resnest101e_Opset16.onnx
392393
model_url: https://github.com/onnx/models/raw/refs/heads/main/Computer_Vision/resnest101e_Opset16_timm/resnest101e_Opset16.onnx?download=
394+
extra_args: "32"
393395
- model: yolo
394396
parser: parser_onnx.py
395397
model_file: yolo11x-cls.pt
396398
model_url: https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo11x-cls.pt
399+
extra_args: "32"
397400

398401
steps:
399402
- uses: actions/checkout@v4
@@ -479,72 +482,152 @@ jobs:
479482
480483
- name: Run evaluation
481484
run: |
485+
DATASET_PATH="docs/ImageNet/test"
482486
MODEL="${{ matrix.model }}"
483-
EXTRA_ARGS="${{ matrix.parallel_flag }}"
487+
EXTRA_ARGS="${{ matrix.extra_args }}"
484488
485-
echo "Запуск оценки для модели $MODEL с флагами: $EXTRA_ARGS"
489+
echo "Запуск оценки для модели $MODEL"
490+
echo "Команда: ${{ steps.set_eval_binary.outputs.EVAL_BINARY }} --model $MODEL $EXTRA_ARGS"
486491

492+
echo "Системная информация до запуска:"
493+
echo "--- Память ---"
494+
free -h
495+
echo "--- CPU ---"
496+
top -bn1 | head -5
497+
echo "--- Диск ---"
498+
df -h docs/ImageNet/test/
499+
500+
TIMESTAMP=$(date +%s)
501+
MONITOR_LOG="monitor_$MODEL.log"
502+
503+
monitor_process() {
504+
local pid=$1
505+
local log_file=$2
506+
507+
echo "Мониторинг процесса $pid..."
508+
509+
while kill -0 $pid 2>/dev/null; do
510+
NOW=$(date '+%H:%M:%S')
511+
512+
MEM=$(ps -o rss= -p $pid 2>/dev/null | awk '{print $1/1024 " MB"}' || echo "N/A")
513+
514+
CPU=$(ps -o pcpu= -p $pid 2>/dev/null || echo "N/A")
515+
516+
TOTAL_MEM=$(free -m | awk 'NR==2{print $3 " MB / " $2 " MB"}')
517+
518+
echo "[$NOW] PID: $pid | MEM: $MEM | CPU: $CPU% | System MEM: $TOTAL_MEM" >> $log_file
519+
520+
sleep 2
521+
done
522+
523+
echo "Процесс $pid завершен" >> $log_file
524+
}
525+
526+
echo "Запуск ACC в фоновом режиме..."
487527
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" \
488528
--model $MODEL \
489-
$EXTRA_ARGS > accuracy_${MODEL}_${EXTRA_ARGS// /_}.txt 2>&1
529+
$EXTRA_ARGS > accuracy_$MODEL.txt 2>&1 &
530+
ACC_PID=$!
490531

491-
if [ $? -ne 0 ]; then
492-
echo "Ошибка при оценке модели $MODEL с флагами: $EXTRA_ARGS"
493-
cat accuracy_${MODEL}_${EXTRA_ARGS// /_}.txt
494-
exit 1
532+
echo "PID процесса: $ACC_PID"
533+
534+
monitor_process $ACC_PID $MONITOR_LOG &
535+
MONITOR_PID=$!
536+
537+
wait $ACC_PID
538+
EXIT_CODE=$?
539+
540+
kill $MONITOR_PID 2>/dev/null || true
541+
542+
echo "Результаты мониторинга:"
543+
if [ -f "$MONITOR_LOG" ]; then
544+
cat "$MONITOR_LOG"
545+
else
546+
echo "Лог мониторинга не создан"
495547
fi
496548

497-
echo "Результат оценки:"
498-
cat accuracy_${MODEL}_${EXTRA_ARGS// /_}.txt
549+
echo "Системная информация после запуска:"
550+
free -h
551+
552+
echo "Код завершения: $EXIT_CODE"
553+
554+
if [ $EXIT_CODE -eq 143 ]; then
555+
echo "Ошибка 143 (SIGTERM) - процесс убит системой"
556+
557+
if sudo dmesg | tail -20 | grep -i "killed process" | grep -q "$ACC_PID"; then
558+
echo "Подтверждено: процесс убит OOM Killer"
559+
sudo dmesg | tail -20 | grep -i "killed process" | tail -5
560+
else
561+
echo "Не найдено подтверждение OOM Killer в логах"
562+
sudo dmesg | tail -20
563+
fi
564+
565+
elif [ $EXIT_CODE -ne 0 ]; then
566+
echo "Ошибка при оценке модели $MODEL (код: $EXIT_CODE)"
567+
else
568+
echo "Оценка успешно завершена"
569+
fi
570+
571+
echo "Лог ACC:"
572+
if [ -f "accuracy_$MODEL.txt" ]; then
573+
cat "accuracy_$MODEL.txt"
574+
else
575+
echo "Файл лога не создан"
576+
fi
577+
578+
# Выход с ошибкой если нужно
579+
if [ $EXIT_CODE -ne 0 ]; then
580+
exit $EXIT_CODE
581+
fi
499582

500583
- name: Extract accuracy value
501584
run: |
502-
ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy_${{ matrix.model }}_${EXTRA_ARGS// /_}.txt | head -1 || echo "0%")
503-
echo "$ACCURACY" > accuracy_value_${{ matrix.model }}_${EXTRA_ARGS// /_}.txt
504-
echo "Accuracy for ${{ matrix.model }} (${{ matrix.parallel_flag }}): $ACCURACY"
585+
ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy_${{ matrix.model }}.txt | head -1 || echo "0%")
586+
echo "$ACCURACY" > accuracy_value_${{ matrix.model }}.txt
587+
echo "Accuracy for ${{ matrix.model }}: $ACCURACY"
505588
506589
- name: Upload accuracy artifacts
507590
uses: actions/upload-artifact@v4
508591
with:
509-
name: accuracy-${{ matrix.model }}-${{ matrix.parallel_flag }}
592+
name: accuracy-${{ matrix.model }}
510593
path: |
511-
accuracy_${{ matrix.model }}_${EXTRA_ARGS// /_}.txt
512-
accuracy_value_${{ matrix.model }}_${EXTRA_ARGS// /_}.txt
594+
accuracy_${{ matrix.model }}.txt
595+
accuracy_value_${{ matrix.model }}.txt
513596
514-
# Дополнительная проверка для GoogLeNet с флагом --onednn 1000
515-
- name: Run evaluation for GoogLeNet with --onednn 1000
516-
if: matrix.model == 'googlenet'
597+
- name: Update README for model (master only)
598+
if: github.ref == 'refs/heads/master'
517599
run: |
518-
MODEL="${{ matrix.model }}"
519-
EXTRA_ARGS="--onednn 1000"
600+
TOP1_ACC=$(grep -oE 'Top-1 Accuracy: [0-9]+\.?[0-9]*%' accuracy_${{ matrix.model }}.txt | grep -oE '[0-9]+\.?[0-9]*')
601+
TOP5_ACC=$(grep -oE 'Top-5 Accuracy: [0-9]+\.?[0-9]*%' accuracy_${{ matrix.model }}.txt | grep -oE '[0-9]+\.?[0-9]*')
602+
DATE=$(date '+%Y-%m-%d')
520603
521-
echo "Запуск оценки для модели $MODEL с флагами: $EXTRA_ARGS"
604+
if [ -z "$TOP1_ACC" ] || [ -z "$TOP5_ACC" ]; then
605+
echo "Ошибка: Не удалось извлечь точность из файла accuracy_${{ matrix.model }}.txt"
606+
cat accuracy_${{ matrix.model }}.txt
607+
exit 1
608+
fi
522609

523-
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" \
524-
--model $MODEL \
525-
$EXTRA_ARGS > accuracy_${MODEL}_onednn_1000.txt 2>&1
610+
UPDATE_TEXT="<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->Accuracy: Top-1: ${TOP1_ACC}% | Top-5: ${TOP5_ACC}% (updated: ${DATE})<!--END_ACCURACY_${{ matrix.model }}-->"
526611

527-
if [ $? -ne 0 ]; then
528-
echo "Ошибка при оценке модели $MODEL с флагами: $EXTRA_ARGS"
529-
cat accuracy_${MODEL}_onednn_1000.txt
612+
if grep -q "<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->" README.md; then
613+
sed -i "s|<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->.*<!--END_ACCURACY_${{ matrix.model }}-->|${UPDATE_TEXT}|" README.md
614+
echo "Обновлена точность для ${{ matrix.model }} в README"
615+
else
616+
echo "Ошибка: Плейсхолдер <!--ACCURACY_${{ matrix.model }}_PLACEHOLDER--> не найден в README.md"
617+
echo "Содержимое README.md:"
618+
cat README.md
530619
exit 1
531620
fi
532-
533-
echo "Результат оценки:"
534-
cat accuracy_${MODEL}_onednn_1000.txt
535621

536-
- name: Extract accuracy value for GoogLeNet with --onednn 1000
537-
if: matrix.model == 'googlenet'
622+
- name: Commit and push changes (main only)
623+
if: github.ref == 'refs/heads/main'
538624
run: |
539-
ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy_${{ matrix.model }}_onednn_1000.txt | head -1 || echo "0%")
540-
echo "$ACCURACY" > accuracy_value_${{ matrix.model }}_onednn_1000.txt
541-
echo "Accuracy for ${{ matrix.model }} (--onednn 1000): $ACCURACY"
542-
543-
- name: Upload accuracy artifacts for GoogLeNet with --onednn 1000
544-
if: matrix.model == 'googlenet'
545-
uses: actions/upload-artifact@v4
546-
with:
547-
name: accuracy-${{ matrix.model }}-onednn-1000
548-
path: |
549-
accuracy_${{ matrix.model }}_onednn_1000.txt
550-
accuracy_value_${{ matrix.model }}_onednn_1000.txt
625+
git config --global user.name "GitHub Actions"
626+
git config --global user.email "actions@github.com"
627+
git add README.md
628+
if git diff-index --quiet HEAD --; then
629+
echo "No changes to commit"
630+
else
631+
git commit -m "[CI] Update accuracy for ${{ matrix.model }}: $(cat accuracy_value_${{ matrix.model }}.txt)"
632+
git push origin master
633+
fi

0 commit comments

Comments
 (0)