Files
PozzettiAndrea-ComfyUI-SAM3/dev/macos-cpu/index.html
T
2026-05-13 08:05:24 +00:00

1644 lines
220 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PozzettiAndrea/ComfyUI-SAM3 - Test Results</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #0f1923;
color: #e6edf3;
min-height: 100vh;
line-height: 1.6;
}
header {
background: #162033;
padding: 1.25rem 2rem;
border-bottom: 1px solid #243656;
}
body.in-iframe header {
display: none;
}
body.in-iframe .container {
padding-top: 1.25rem;
}
body.in-iframe .summary-meta {
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
margin-bottom: 1rem;
}
h1 {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
h1 a {
color: #e6edf3;
text-decoration: none;
}
h1 a:hover { color: #58a6ff; }
.meta-chips {
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
align-items: center;
}
.meta-chip {
display: inline-flex;
align-items: center;
gap: 0.35rem;
padding: 0.2rem 0.6rem;
background: #1c2d44;
border: 1px solid #243656;
border-radius: 2rem;
font-size: 0.75rem;
color: #8ba3c1;
}
.meta-chip svg {
width: 12px;
height: 12px;
fill: currentColor;
flex-shrink: 0;
}
.container {
max-width: 1400px;
margin: 0 auto;
padding: 2rem;
}
/* Summary Section */
.summary {
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
padding: 1.5rem;
margin-bottom: 2rem;
}
.progress-wrapper {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
}
.progress-bar {
background: #1c2d44;
border-radius: 6px;
height: 10px;
overflow: hidden;
flex: 1;
}
.progress-fill {
background: #3fb950;
height: 100%;
border-radius: 6px;
transition: width 0.3s ease;
}
.progress-fill.has-failures {
background: linear-gradient(90deg, #3fb950 0%, #3fb950 0.0%, #f85149 0.0%, #f85149 100%);
width: 100% !important;
border-radius: 6px;
}
.progress-label {
font-size: 0.85rem;
font-weight: 600;
color: #8ba3c1;
white-space: nowrap;
min-width: 3.5rem;
text-align: right;
}
.stats {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
align-items: center;
}
.stat-badge {
padding: 0.35rem 0.75rem;
border-radius: 2rem;
font-weight: 600;
font-size: 0.8rem;
}
.stat-pass {
background: rgba(63, 185, 80, 0.15);
color: #3fb950;
}
.stat-fail {
background: rgba(248, 81, 73, 0.15);
color: #f85149;
}
.stat-total {
color: #8ba3c1;
font-size: 0.85rem;
}
/* Failed Section */
.failed-section {
background: rgba(248, 81, 73, 0.08);
border: 1px solid rgba(248, 81, 73, 0.3);
border-radius: 8px;
padding: 1.25rem;
margin-bottom: 2rem;
}
.failed-section h2 {
color: #f85149;
font-size: 0.9rem;
font-weight: 600;
margin-bottom: 0.75rem;
}
.failed-item {
background: #162033;
border: 1px solid #243656;
border-radius: 6px;
padding: 1rem;
margin-bottom: 0.5rem;
}
.failed-item:last-child {
margin-bottom: 0;
}
.failed-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.5rem;
}
.failed-name {
font-weight: 600;
color: #f85149;
}
.failed-duration {
color: #8ba3c1;
font-size: 0.8rem;
}
.failed-error {
background: #0f1923;
border: 1px solid #243656;
padding: 0.75rem;
border-radius: 6px;
font-family: 'SFMono-Regular', 'Menlo', 'Monaco', monospace;
font-size: 0.8rem;
color: #d29922;
margin-bottom: 0.5rem;
}
.log-link {
color: #58a6ff;
text-decoration: none;
font-size: 0.8rem;
}
.log-link:hover {
text-decoration: underline;
}
/* Workflow Grid */
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.25rem;
}
.section-title {
font-size: 0.8rem;
color: #8ba3c1;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.view-controls {
display: flex;
gap: 0;
align-items: center;
border: 1px solid #243656;
border-radius: 6px;
overflow: hidden;
}
.view-btn {
background: #1c2d44;
color: #8ba3c1;
border: none;
border-right: 1px solid #243656;
padding: 0.3rem 0.75rem;
cursor: pointer;
font-size: 0.75rem;
font-weight: 500;
transition: all 0.15s;
}
.view-btn:last-child {
border-right: none;
}
.view-btn:hover {
background: #243656;
color: #e6edf3;
}
.view-btn.active {
background: #58a6ff;
color: #fff;
}
.workflow-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
}
.workflow-grid.view-list {
grid-template-columns: 1fr;
gap: 0;
}
.workflow-grid.view-list .workflow-card {
border-radius: 0;
border-bottom: 1px solid #243656;
}
.workflow-grid.view-list .workflow-card:first-child {
border-radius: 8px 8px 0 0;
}
.workflow-grid.view-list .workflow-card:last-child {
border-radius: 0 0 8px 8px;
border-bottom: none;
}
.workflow-grid.view-list .workflow-card:only-child {
border-radius: 8px;
}
.workflow-grid.view-list .workflow-screenshot {
width: 100%;
height: auto;
aspect-ratio: auto;
}
.workflow-grid.view-list .workflow-info {
border-top: 1px solid #243656;
padding: 0.75rem 1rem;
}
.workflow-grid.view-list .workflow-name {
max-width: none;
font-size: 0.9rem;
}
.workflow-card {
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
overflow: hidden;
transition: transform 0.15s, border-color 0.15s;
}
.workflow-card:hover {
transform: translateY(-1px);
border-color: #4a6282;
}
.workflow-card.clickable {
cursor: pointer;
}
.workflow-card.failed {
border-color: #f85149;
}
.workflow-card.failed:hover {
border-color: #f85149;
}
.workflow-screenshot {
width: 100%;
aspect-ratio: 16/10;
object-fit: cover;
background: #0f1923;
display: block;
}
.workflow-screenshot.placeholder {
display: flex;
align-items: center;
justify-content: center;
color: #4a6282;
font-size: 0.8rem;
}
.workflow-info {
padding: 0.75rem 1rem;
border-top: 1px solid #243656;
}
.workflow-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.25rem;
}
.workflow-name {
font-weight: 500;
font-size: 0.85rem;
color: #e6edf3;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 65%;
}
.workflow-badge {
padding: 0.15rem 0.5rem;
border-radius: 2rem;
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.03em;
flex-shrink: 0;
}
.workflow-badge.pass {
background: rgba(63, 185, 80, 0.15);
color: #3fb950;
}
.workflow-badge.fail {
background: rgba(248, 81, 73, 0.15);
color: #f85149;
}
.workflow-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.75rem;
color: #4a6282;
}
/* Lightbox */
.lightbox {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(1, 4, 9, 0.9);
z-index: 1000;
justify-content: center;
align-items: flex-start;
padding: 2rem;
overflow-y: auto;
}
.lightbox.active {
display: flex;
}
.lightbox-content {
display: flex;
flex-direction: column;
max-width: 1200px;
width: 100%;
margin: auto;
}
.lightbox-content img {
max-width: 100%;
max-height: 60vh;
object-fit: contain;
border-radius: 8px;
border: 1px solid #243656;
align-self: center;
cursor: zoom-in;
}
.img-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 1002;
background: rgba(1, 4, 9, 0.95);
overflow: auto;
align-items: center;
justify-content: center;
}
.img-overlay.active {
display: flex;
}
.img-overlay.zoomed {
align-items: flex-start;
justify-content: flex-start;
}
.img-overlay img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
cursor: zoom-in;
}
.img-overlay.zoomed img {
max-width: none;
max-height: none;
cursor: zoom-out;
}
.lightbox-close {
position: fixed;
top: 1rem;
right: 1.5rem;
font-size: 2rem;
color: #e6edf3;
cursor: pointer;
opacity: 0.6;
background: none;
border: none;
z-index: 1001;
}
.lightbox-close:hover {
opacity: 1;
}
.lightbox-nav {
position: fixed;
top: 50%;
transform: translateY(-50%);
background: rgba(22, 32, 51, 0.8);
border: 1px solid #243656;
color: #e6edf3;
font-size: 2.5rem;
width: 48px;
height: 64px;
border-radius: 8px;
cursor: pointer;
opacity: 0.6;
z-index: 1001;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.15s;
padding: 0;
line-height: 1;
}
.lightbox-nav:hover {
opacity: 1;
}
.lightbox-nav-left { left: 1rem; }
.lightbox-nav-right { right: 1rem; }
.lightbox-info {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.25rem;
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
margin-top: 1rem;
}
.lightbox-title {
font-size: 1rem;
font-weight: 600;
color: #e6edf3;
}
.lightbox-hardware {
display: block;
font-size: 0.75rem;
color: #8ba3c1;
margin-top: 0.25rem;
}
.lightbox-meta {
display: flex;
gap: 1rem;
align-items: center;
}
.lightbox-badge {
padding: 0.25rem 0.75rem;
border-radius: 2rem;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
}
.lightbox-badge.pass {
background: rgba(63, 185, 80, 0.15);
color: #3fb950;
}
.lightbox-badge.fail {
background: rgba(248, 81, 73, 0.15);
color: #f85149;
}
.lightbox-duration {
color: #8ba3c1;
font-size: 0.85rem;
}
.lightbox-log {
background: #0f1923;
border: 1px solid #243656;
border-radius: 8px;
padding: 1rem;
margin-top: 1rem;
max-height: 300px;
overflow-y: auto;
font-family: 'SFMono-Regular', 'Menlo', 'Monaco', monospace;
font-size: 0.8rem;
line-height: 1.5;
white-space: pre-wrap;
word-break: break-all;
color: #8ba3c1;
}
.lightbox-log::-webkit-scrollbar {
width: 8px;
}
.lightbox-log::-webkit-scrollbar-track {
background: #162033;
border-radius: 4px;
}
.lightbox-log::-webkit-scrollbar-thumb {
background: #243656;
border-radius: 4px;
}
.lightbox-log::-webkit-scrollbar-thumb:hover {
background: #4a6282;
}
/* Resource Graph */
.resource-graph {
display: none;
margin-top: 1rem;
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
padding: 1rem;
}
.resource-graph.active {
display: block;
}
.resource-graph-title {
font-size: 0.8rem;
color: #8ba3c1;
font-weight: 500;
margin-bottom: 0.5rem;
}
.resource-graph canvas {
width: 100%;
height: 120px;
cursor: crosshair;
}
.resource-legend {
display: flex;
gap: 1rem;
margin-top: 0.5rem;
font-size: 0.75rem;
color: #8ba3c1;
}
.resource-legend span {
display: flex;
align-items: center;
gap: 4px;
}
.resource-legend .dot {
width: 8px;
height: 8px;
border-radius: 50%;
}
.resource-legend .ram { background: #3fb950; }
.resource-legend .gpu { background: #d29922; }
/* Video Player */
.video-player {
display: none;
margin-top: 1rem;
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
padding: 1rem;
}
.video-player.active {
display: block;
}
.video-controls {
display: flex;
align-items: center;
gap: 1rem;
margin-top: 0.5rem;
}
.video-play-btn {
background: #58a6ff;
color: #fff;
border: none;
padding: 0.4rem 1rem;
border-radius: 6px;
cursor: pointer;
font-size: 0.8rem;
font-weight: 500;
}
.video-play-btn:hover {
background: #79b8ff;
}
.video-frame-counter {
color: #8ba3c1;
font-size: 0.8rem;
}
.video-slider-container {
padding: 15px 0;
}
/* noUiSlider customization */
#video-slider {
height: 6px;
background: #1c2d44;
border: none;
box-shadow: none;
}
#video-slider .noUi-connect {
background: #58a6ff;
}
#video-slider .noUi-handle {
width: 16px;
height: 16px;
background: #58a6ff;
border: none;
border-radius: 50%;
box-shadow: none;
top: -5px;
right: -8px;
cursor: pointer;
}
#video-slider .noUi-handle:before,
#video-slider .noUi-handle:after {
display: none;
}
/* Pips (tick marks) */
.noUi-pips {
color: #4a6282;
}
.noUi-marker {
background: #243656;
width: 2px;
}
.noUi-marker-large {
height: 12px;
}
.noUi-value {
display: none;
}
/* Models Section */
.models-section {
margin-top: 2rem;
margin-bottom: 2rem;
}
.models-total {
font-size: 0.8rem;
color: #8ba3c1;
}
.models-folder {
background: #162033;
border: 1px solid #243656;
border-radius: 8px;
margin-bottom: 0.5rem;
overflow: hidden;
}
.models-folder-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 1rem;
cursor: pointer;
user-select: none;
list-style: none;
}
.models-folder-header::-webkit-details-marker {
display: none;
}
.models-folder-header::before {
content: '\25B6';
font-size: 0.6rem;
color: #4a6282;
margin-right: 0.5rem;
transition: transform 0.15s;
}
.models-folder[open] > .models-folder-header::before {
transform: rotate(90deg);
}
.models-folder-name {
font-family: 'SFMono-Regular', 'Menlo', 'Monaco', monospace;
font-size: 0.85rem;
font-weight: 600;
color: #58a6ff;
}
.models-folder-meta {
display: flex;
align-items: center;
gap: 0.75rem;
}
.models-folder-size {
font-size: 0.8rem;
font-weight: 600;
color: #8ba3c1;
}
.models-source-link {
font-size: 0.75rem;
color: #3fb950;
text-decoration: none;
padding: 0.15rem 0.5rem;
background: rgba(63, 185, 80, 0.1);
border: 1px solid rgba(63, 185, 80, 0.2);
border-radius: 2rem;
}
.models-source-link:hover {
background: rgba(63, 185, 80, 0.2);
text-decoration: none;
}
.models-file-list {
border-top: 1px solid #243656;
padding: 0.25rem 0;
}
.models-file {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.35rem 1rem 0.35rem 2rem;
font-size: 0.8rem;
}
.models-file:hover {
background: rgba(88, 166, 255, 0.05);
}
.models-file-path {
font-family: 'SFMono-Regular', 'Menlo', 'Monaco', monospace;
color: #8ba3c1;
word-break: break-all;
}
.models-file-size {
color: #4a6282;
white-space: nowrap;
margin-left: 1rem;
flex-shrink: 0;
}
/* Footer */
footer {
text-align: center;
padding: 2.5rem;
color: #4a6282;
font-size: 0.8rem;
}
footer a {
color: #58a6ff;
text-decoration: none;
}
footer a:hover {
text-decoration: underline;
}
/* Responsive */
@media (max-width: 600px) {
.workflow-grid {
grid-template-columns: 1fr !important;
}
.workflow-grid.view-list .workflow-card {
grid-template-columns: 1fr;
}
.workflow-grid.view-list .workflow-screenshot {
width: 100%;
height: auto;
aspect-ratio: 16/10;
}
.stats {
flex-direction: column;
align-items: flex-start;
}
.section-header {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
.container {
padding: 1rem;
}
}
</style>
<link href="https://cdn.jsdelivr.net/npm/nouislider@15/dist/nouislider.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/nouislider@15/dist/nouislider.min.js"></script>
</head>
<body>
<header>
<h1><a href="https://github.com/PozzettiAndrea/PozzettiAndrea/ComfyUI-SAM3">PozzettiAndrea/ComfyUI-SAM3</a> Test Results</h1>
<div class="meta-chips">
<span class="meta-chip"><svg viewBox="0 0 16 16"><path d="M8 0a8 8 0 110 16A8 8 0 018 0zm.5 4.5a.5.5 0 00-1 0v3.793L5.854 9.854a.5.5 0 10.708.708l1.853-1.854a.5.5 0 00.085-.094V4.5z"/></svg> 2026-05-13 07:59 UTC</span> <span class="meta-chip"><svg viewBox="0 0 16 16"><path d="M2.5 4a.5.5 0 100 1 .5.5 0 000-1zM4 4.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5zM2.5 7a.5.5 0 100 1 .5.5 0 000-1zM4 7.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7A.5.5 0 014 7.5zM2.5 10a.5.5 0 100 1 .5.5 0 000-1zM4 10.5a.5.5 0 01.5-.5h7a.5.5 0 010 1h-7a.5.5 0 01-.5-.5z"/></svg> macOS-15.7.4-arm64-arm-64bit</span> <span class="meta-chip"><svg viewBox="0 0 16 16"><path d="M5 0a.5.5 0 01.5.5V2h1V.5a.5.5 0 011 0V2h1V.5a.5.5 0 011 0V2h.5A2.5 2.5 0 0112.5 4.5H14v1h-1.5v1H14v1h-1.5v1H14v1h-1.5A2.5 2.5 0 0110 12h-.5v1.5a.5.5 0 01-1 0V12h-1v1.5a.5.5 0 01-1 0V12H6v1.5a.5.5 0 01-1 0V12h-.5A2.5 2.5 0 012 9.5H.5v-1H2v-1H.5v-1H2v-1H.5v-1H2A2.5 2.5 0 014.5 2V.5A.5.5 0 015 0zm-.5 4A1.5 1.5 0 003 5.5v4A1.5 1.5 0 004.5 11h6a1.5 1.5 0 001.5-1.5v-4A1.5 1.5 0 0010.5 4h-6z"/></svg> arm</span>
</div>
</header>
<div class="container">
<div class="summary">
<div class="progress-wrapper">
<div class="progress-bar">
<div class="progress-fill has-failures" style="width: 0.0%"></div>
</div>
<span class="progress-label">0.0%</span>
</div>
<div class="stats">
<span class="stat-badge stat-pass">0 passed</span>
<span class="stat-badge stat-fail">4 failed</span>
<span class="stat-total">0/4 tests</span>
</div>
</div>
<div class="section-header">
<h2 class="section-title">Workflows</h2>
<div class="view-controls">
<button class="view-btn active" onclick="setView('grid')">Grid</button>
<button class="view-btn" onclick="setView('list')">List</button>
</div>
</div>
<div class="workflow-grid" id="workflow-grid">
<div class="workflow-card clickable failed" onclick="openLightboxByName('image_seg_point')">
<div class="workflow-screenshot placeholder">No screenshot</div>
<div class="workflow-info">
<div class="workflow-header">
<span class="workflow-name" title="image_seg_point">image_seg_point</span>
<span class="workflow-badge fail">fail</span>
</div>
<div class="workflow-meta">
<span>43.42s</span>
</div>
</div>
</div>
<div class="workflow-card clickable failed" onclick="openLightboxByName('image_seg_text')">
<div class="workflow-screenshot placeholder">No screenshot</div>
<div class="workflow-info">
<div class="workflow-header">
<span class="workflow-name" title="image_seg_text">image_seg_text</span>
<span class="workflow-badge fail">fail</span>
</div>
<div class="workflow-meta">
<span>4.99s</span>
</div>
</div>
</div>
<div class="workflow-card clickable failed" onclick="openLightboxByName('scene_seg')">
<div class="workflow-screenshot placeholder">No screenshot</div>
<div class="workflow-info">
<div class="workflow-header">
<span class="workflow-name" title="scene_seg">scene_seg</span>
<span class="workflow-badge fail">fail</span>
</div>
<div class="workflow-meta">
<span>7.17s</span>
</div>
</div>
</div>
<div class="workflow-card clickable failed" onclick="openLightboxByName('scene_seg_interactive')">
<div class="workflow-screenshot placeholder">No screenshot</div>
<div class="workflow-info">
<div class="workflow-header">
<span class="workflow-name" title="scene_seg_interactive">scene_seg_interactive</span>
<span class="workflow-badge fail">fail</span>
</div>
<div class="workflow-meta">
<span>6.67s</span>
</div>
</div>
</div>
</div>
<div class="failed-section">
<h2>Failed Tests</h2>
<div class="failed-item">
<div class="failed-header">
<span class="failed-name">image_seg_point</span>
<span class="failed-duration">43.42s</span>
</div>
<div class="failed-error">Workflow execution failed: {&#x27;prompt_id&#x27;: &#x27;feb39149-ea8d-4db4-bc83-89e857ec9581&#x27;, &#x27;node_id&#x27;: &#x27;31&#x27;, &#x27;node_type&#x27;: &#x27;SAM3Segmentation&#x27;, &#x27;executed&#x27;: [&#x27;30&#x27;, &#x27;15&#x27;, &#x27;1&#x27;], &#x27;exception_message&#x27;: &#x27;No module named \&#x27;transformers\&#x27;\n\nWorker traceback:\nTraceback (most recent call last):\n File &quot;/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py&quot;, line 1762, in main\n result = method(**inputs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py&quot;, line 1833, in EXECUTE_NORMALIZED\n to_return = cls.execute(*args, **kwargs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py&quot;, line 469, in execute\n sam3_model = get_or_build_model(sam3_model_config)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py&quot;, line 31, in get_or_build_model\n from .sam3_model_patcher import SAM3UnifiedModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py&quot;, line 14, in &lt;module&gt;\n from comfy.model_patcher import ModelPatcher\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py&quot;, line 32, in &lt;module&gt;\n import comfy.hooks\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py&quot;, line 14, in &lt;module&gt;\n import comfy.lora\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py&quot;, line 23, in &lt;module&gt;\n import comfy.model_base\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py&quot;, line 61, in &lt;module&gt;\n import comfy.ldm.hidream_o1.model\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py&quot;, line 20, in &lt;module&gt;\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py&quot;, line 10, in &lt;module&gt;\n from comfy import sd1_clip\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py&quot;, line 3, in &lt;module&gt;\n from transformers import CLIPTokenizer\nModuleNotFoundError: No module named \&#x27;transformers\&#x27;\n\n&#x27;, &#x27;exception_type&#x27;: &#x27;comfy_env.isolation.workers.base.WorkerError&#x27;, &#x27;traceback&#x27;: [&#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 535, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 335, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 309, in _async_map_node_over_list\n await process_inputs(input_dict, i)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 297, in process_inputs\n result = f(**inputs)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py&quot;, line 556, in proxy\n result = worker.call_method(\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py&quot;, line 674, in call_method\n raise WorkerError(\n&#x27;], &#x27;current_inputs&#x27;: {&#x27;refinement_iterations&#x27;: [0], &#x27;use_multimask&#x27;: [True], &#x27;output_best_mask&#x27;: [True], &#x27;sam3_model_config&#x27;: [&quot;{&#x27;checkpoint_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors&#x27;, &#x27;bpe_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz&#x27;, &#x27;precision&#x27;: &#x27;auto&#x27;, &#x27;dtype&#x27;: &#x27;bf16&#x27;, &#x27;compile&#x27;: False}&quot;], &#x27;image&#x27;: [&#x27;tensor([[[[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3176, 0.5804, 0.7216],\n [0.3333, 0.6039, 0.7451],\n [0.3529, 0.6235, 0.7647]],\n\n [[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3137, 0.5765, 0.7176],\n [0.3137, 0.5843, 0.7255],\n [0.3255, 0.5961, 0.7373]],\n\n [[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3922, 0.5333, 0.6275],\n [0.3922, 0.5294, 0.6235],\n [0.3961, 0.5333, 0.6275]],\n\n ...,\n\n [[0.4941, 0.4863, 0.4157],\n [0.4941, 0.4863, 0.4157],\n [0.4980, 0.4902, 0.4196],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]],\n\n [[0.5098, 0.5020, 0.4314],\n [0.5098, 0.5020, 0.4314],\n [0.5137, 0.5059, 0.4353],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]],\n\n [[0.5176, 0.5098, 0.4392],\n [0.5216, 0.5137, 0.4431],\n [0.5255, 0.5176, 0.4471],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]]]])&#x27;], &#x27;positive_points&#x27;: [&quot;{&#x27;points&#x27;: [[0.3330291853098248, 0.4464251623052616], [0.32588862185381995, 0.5657519162372204], [0.3373135233834277, 0.7637835504221735]], &#x27;labels&#x27;: [1, 1, 1]}&quot;], &#x27;negative_points&#x27;: [&quot;{&#x27;points&#x27;: [], &#x27;labels&#x27;: []}&quot;]}, &#x27;current_outputs&#x27;: [&#x27;29&#x27;, &#x27;30&#x27;, &#x27;28&#x27;, &#x27;15&#x27;, &#x27;1&#x27;, &#x27;31&#x27;], &#x27;timestamp&#x27;: 1778659151864}
Details:
Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/image_seg_point.json
Node error: SAM3Segmentation</div>
</div>
<div class="failed-item">
<div class="failed-header">
<span class="failed-name">image_seg_text</span>
<span class="failed-duration">4.99s</span>
</div>
<div class="failed-error">Workflow execution failed: {&#x27;prompt_id&#x27;: &#x27;b3cb8b18-c610-4a74-b79f-40cb18370e25&#x27;, &#x27;node_id&#x27;: &#x27;15&#x27;, &#x27;node_type&#x27;: &#x27;SAM3Grounding&#x27;, &#x27;executed&#x27;: [&#x27;12&#x27;, &#x27;1&#x27;], &#x27;exception_message&#x27;: &#x27;No module named \&#x27;transformers\&#x27;\n\nWorker traceback:\nTraceback (most recent call last):\n File &quot;/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py&quot;, line 1762, in main\n result = method(**inputs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py&quot;, line 1833, in EXECUTE_NORMALIZED\n to_return = cls.execute(*args, **kwargs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py&quot;, line 86, in execute\n sam3_model = get_or_build_model(sam3_model_config)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py&quot;, line 31, in get_or_build_model\n from .sam3_model_patcher import SAM3UnifiedModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py&quot;, line 14, in &lt;module&gt;\n from comfy.model_patcher import ModelPatcher\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py&quot;, line 32, in &lt;module&gt;\n import comfy.hooks\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py&quot;, line 14, in &lt;module&gt;\n import comfy.lora\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py&quot;, line 23, in &lt;module&gt;\n import comfy.model_base\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py&quot;, line 61, in &lt;module&gt;\n import comfy.ldm.hidream_o1.model\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py&quot;, line 20, in &lt;module&gt;\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py&quot;, line 10, in &lt;module&gt;\n from comfy import sd1_clip\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py&quot;, line 3, in &lt;module&gt;\n from transformers import CLIPTokenizer\nModuleNotFoundError: No module named \&#x27;transformers\&#x27;\n\n&#x27;, &#x27;exception_type&#x27;: &#x27;comfy_env.isolation.workers.base.WorkerError&#x27;, &#x27;traceback&#x27;: [&#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 535, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 335, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 309, in _async_map_node_over_list\n await process_inputs(input_dict, i)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 297, in process_inputs\n result = f(**inputs)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py&quot;, line 556, in proxy\n result = worker.call_method(\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py&quot;, line 674, in call_method\n raise WorkerError(\n&#x27;], &#x27;current_inputs&#x27;: {&#x27;confidence_threshold&#x27;: [0.2], &#x27;text_prompt&#x27;: [&#x27;child&#x27;], &#x27;max_detections&#x27;: [-1], &#x27;sam3_model_config&#x27;: [&quot;{&#x27;checkpoint_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors&#x27;, &#x27;bpe_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz&#x27;, &#x27;precision&#x27;: &#x27;fp32&#x27;, &#x27;dtype&#x27;: &#x27;fp32&#x27;, &#x27;compile&#x27;: False}&quot;], &#x27;image&#x27;: [&#x27;tensor([[[[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3176, 0.5804, 0.7216],\n [0.3333, 0.6039, 0.7451],\n [0.3529, 0.6235, 0.7647]],\n\n [[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3137, 0.5765, 0.7176],\n [0.3137, 0.5843, 0.7255],\n [0.3255, 0.5961, 0.7373]],\n\n [[0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n [0.2902, 0.4667, 0.5961],\n ...,\n [0.3922, 0.5333, 0.6275],\n [0.3922, 0.5294, 0.6235],\n [0.3961, 0.5333, 0.6275]],\n\n ...,\n\n [[0.4941, 0.4863, 0.4157],\n [0.4941, 0.4863, 0.4157],\n [0.4980, 0.4902, 0.4196],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]],\n\n [[0.5098, 0.5020, 0.4314],\n [0.5098, 0.5020, 0.4314],\n [0.5137, 0.5059, 0.4353],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]],\n\n [[0.5176, 0.5098, 0.4392],\n [0.5216, 0.5137, 0.4431],\n [0.5255, 0.5176, 0.4471],\n ...,\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059],\n [0.5647, 0.5608, 0.5059]]]])&#x27;]}, &#x27;current_outputs&#x27;: [&#x27;12&#x27;, &#x27;15&#x27;, &#x27;1&#x27;, &#x27;4&#x27;, &#x27;3&#x27;], &#x27;timestamp&#x27;: 1778659157315}
Details:
Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/image_seg_text.json
Node error: SAM3Grounding</div>
</div>
<div class="failed-item">
<div class="failed-header">
<span class="failed-name">scene_seg</span>
<span class="failed-duration">7.17s</span>
</div>
<div class="failed-error">Workflow execution failed: {&#x27;prompt_id&#x27;: &#x27;e4e71f1c-6541-4d9f-9d23-3a7495ec1415&#x27;, &#x27;node_id&#x27;: &#x27;27&#x27;, &#x27;node_type&#x27;: &#x27;SAM3MultipromptSegmentation&#x27;, &#x27;executed&#x27;: [&#x27;12&#x27;, &#x27;20&#x27;, &#x27;1&#x27;], &#x27;exception_message&#x27;: &#x27;No module named \&#x27;transformers\&#x27;\n\nWorker traceback:\nTraceback (most recent call last):\n File &quot;/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py&quot;, line 1762, in main\n result = method(**inputs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py&quot;, line 1833, in EXECUTE_NORMALIZED\n to_return = cls.execute(*args, **kwargs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py&quot;, line 695, in execute\n sam3_model = get_or_build_model(sam3_model_config)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py&quot;, line 31, in get_or_build_model\n from .sam3_model_patcher import SAM3UnifiedModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py&quot;, line 14, in &lt;module&gt;\n from comfy.model_patcher import ModelPatcher\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py&quot;, line 32, in &lt;module&gt;\n import comfy.hooks\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py&quot;, line 14, in &lt;module&gt;\n import comfy.lora\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py&quot;, line 23, in &lt;module&gt;\n import comfy.model_base\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py&quot;, line 61, in &lt;module&gt;\n import comfy.ldm.hidream_o1.model\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py&quot;, line 20, in &lt;module&gt;\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py&quot;, line 10, in &lt;module&gt;\n from comfy import sd1_clip\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py&quot;, line 3, in &lt;module&gt;\n from transformers import CLIPTokenizer\nModuleNotFoundError: No module named \&#x27;transformers\&#x27;\n\n&#x27;, &#x27;exception_type&#x27;: &#x27;comfy_env.isolation.workers.base.WorkerError&#x27;, &#x27;traceback&#x27;: [&#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 535, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 335, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 309, in _async_map_node_over_list\n await process_inputs(input_dict, i)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 297, in process_inputs\n result = f(**inputs)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py&quot;, line 556, in proxy\n result = worker.call_method(\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py&quot;, line 674, in call_method\n raise WorkerError(\n&#x27;], &#x27;current_inputs&#x27;: {&#x27;refinement_iterations&#x27;: [0], &#x27;use_multimask&#x27;: [False], &#x27;sam3_model_config&#x27;: [&quot;{&#x27;checkpoint_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors&#x27;, &#x27;bpe_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz&#x27;, &#x27;precision&#x27;: &#x27;fp32&#x27;, &#x27;dtype&#x27;: &#x27;fp32&#x27;, &#x27;compile&#x27;: False}&quot;], &#x27;image&#x27;: [&#x27;tensor([[[[0.9176, 0.8392, 0.7333],\n [0.9294, 0.8471, 0.7412],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8078, 0.6627, 0.4902],\n [0.8039, 0.6588, 0.4863],\n [0.8157, 0.6706, 0.4980]],\n\n [[0.9137, 0.8353, 0.7294],\n [0.9216, 0.8392, 0.7333],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8039, 0.6588, 0.4863],\n [0.8039, 0.6588, 0.4863],\n [0.8118, 0.6667, 0.4941]],\n\n [[0.9137, 0.8314, 0.7255],\n [0.9137, 0.8314, 0.7255],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8078, 0.6627, 0.4902],\n [0.8118, 0.6667, 0.4941],\n [0.8039, 0.6588, 0.4863]],\n\n ...,\n\n [[0.8667, 0.6784, 0.4902],\n [0.8706, 0.6824, 0.4941],\n [0.8706, 0.6824, 0.4941],\n ...,\n [0.6471, 0.4431, 0.2549],\n [0.6392, 0.4353, 0.2471],\n [0.6471, 0.4431, 0.2549]],\n\n [[0.8588, 0.6706, 0.4824],\n [0.8667, 0.6784, 0.4902],\n [0.8706, 0.6824, 0.4941],\n ...,\n [0.6431, 0.4392, 0.2510],\n [0.6471, 0.4431, 0.2549],\n [0.6549, 0.4510, 0.2627]],\n\n [[0.8627, 0.6745, 0.4863],\n [0.8667, 0.6784, 0.4902],\n [0.8784, 0.6902, 0.5020],\n ...,\n [0.6353, 0.4314, 0.2431],\n [0.6431, 0.4392, 0.2510],\n [0.6392, 0.4353, 0.2471]]]])&#x27;], &#x27;multi_prompts&#x27;: [&quot;[{&#x27;id&#x27;: 0, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.7518972528753959, 0.6355044797738758], [0.7340045522905485, 0.6593619024052091], [0.7021953068063758, 0.6623440802341257], [0.6902668397498108, 0.677254969378709], [0.668397983479442, 0.6742727915497924], [0.7180999295484621, 0.6176114128003758], [0.7180999295484621, 0.572878745366626], [0.7439449415043526, 0.5311282557617927], [0.7240641630767446, 0.5609500340509593], [0.6982191511208541, 0.5609500340509593]], &#x27;labels&#x27;: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [], &#x27;labels&#x27;: []}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.7141237738629407, 0.6056827014847093, 0.15109391604982114, 0.19085938105066613]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 1, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.6513952517072837, 0.6001522443905642], [0.6354008929467748, 0.6921217188777309], [0.6433980723270292, 0.8680633222444846], [0.8859791801947458, 0.884058013459644], [0.9046392654153393, 0.6041509171943541], [0.9046392654153393, 0.5441708251375063], [0.8060073863922018, 0.5201787883147672]], &#x27;labels&#x27;: [1, 1, 1, 1, 1, 1, 1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [[0.7180384132094035, 0.5921548987829846], [0.7180384132094035, 0.5921548987829846], [0.7393642248900819, 0.6601323364474121], [0.7393642248900819, 0.6601323364474121], [0.7446956778102515, 0.6841243732701512], [0.7446956778102515, 0.6841243732701512], [0.670055336927877, 0.6721283548587816], [0.670055336927877, 0.6721283548587816], [0.6913811486085556, 0.608149589998144], [0.6913811486085556, 0.608149589998144], [0.6887154221484707, 0.552168170745086], [0.6887154221484707, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7366984984299972, 0.552168170745086], [0.7366984984299972, 0.552168170745086]], &#x27;labels&#x27;: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.7713529424110994, 0.7141144192985751, 0.31455572229000606, 0.4198606443979348]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 2, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.5279788816577594, 0.8586378093779201], [0.5097671062510242, 0.6517998210195123], [0.4733435554375539, 0.64789721746558], [0.37968299620291596, 0.64789721746558], [0.39529308940868896, 0.8313195845003946], [0.5565973858683432, 0.8586378093779201], [0.569605796873154, 0.6439946139116478]], &#x27;labels&#x27;: [1, 1, 1, 1, 1, 1, 1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [[0.4863519664423647, 0.7415597027599534], [0.4863519664423647, 0.7415597027599534], [0.4837502842414026, 0.8508326022700556], [0.4837502842414026, 0.8508326022700556], [0.4473267334279323, 0.8664430164857846], [0.4473267334279323, 0.8664430164857846], [0.43431832242312146, 0.628384199695919], [0.43431832242312146, 0.628384199695919], [0.5123687884519864, 0.5893581641565967], [0.5123687884519864, 0.5893581641565967], [0.5019620596481378, 0.6361894068037834], [0.5019620596481378, 0.6361894068037834], [0.4291149580211971, 0.6400920103577157], [0.4291149580211971, 0.6400920103577157]], &#x27;labels&#x27;: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.47724607873899716, 0.7591214187526485, 0.21593962267985972, 0.24586402389773]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 3, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.43642532993691785, 0.595717523200948]], &#x27;labels&#x27;: [1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [], &#x27;labels&#x27;: []}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.4324084720788661, 0.6137937552745099, 0.06426972572882772, 0.07230492829424773]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 4, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.5006950556657457, 0.595717523200948]], &#x27;labels&#x27;: [1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [], &#x27;labels&#x27;: []}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.5027034845947715, 0.5716158804361987, 0.09238773073518991, 0.1687114993532448]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 5, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.9264819886192297, 0.384828149009392], [0.7939256793035224, 0.37880273831820466], [0.7939256793035224, 0.11368466790596292], [0.9304988464772813, 0.10765925721477561], [0.874262836464557, 0.22214206034733455], [0.8501616893162467, 0.22214206034733455], [0.846144831458195, 0.31854863140633155], [0.8983639836128675, 0.3004723993327696], [0.8943471257548158, 0.20406582827377262], [0.8943471257548158, 0.12573548928833755], [0.8421279736001431, 0.1558625427442741], [0.830077400025988, 0.28842157795039497], [0.8220436843098845, 0.33059945278870617]], &#x27;labels&#x27;: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [], &#x27;labels&#x27;: []}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.8662291207484536, 0.25829452449445844, 0.18477546147037982, 0.31332135594174026]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}, {&#x27;id&#x27;: 6, &#x27;positive_points&#x27;: {&#x27;points&#x27;: [[0.7045792285036274, 0.9568116711293354], [0.6789425589101554, 0.9568116711293354], [0.6569682706871793, 0.9348369322210276], [0.6716177961691634, 0.9293432474939506], [0.6569682706871793, 0.9403306169481045], [0.7082416098741234, 0.9403306169481045]], &#x27;labels&#x27;: [1, 1, 1, 1, 1, 1]}, &#x27;negative_points&#x27;: {&#x27;points&#x27;: [], &#x27;labels&#x27;: []}, &#x27;positive_boxes&#x27;: {&#x27;boxes&#x27;: [[0.6789425589101554, 0.943077459311643, 0.10254667837388842, 0.07141790145200044]], &#x27;labels&#x27;: [True]}, &#x27;negative_boxes&#x27;: {&#x27;boxes&#x27;: [], &#x27;labels&#x27;: []}}]&quot;]}, &#x27;current_outputs&#x27;: [&#x27;20&#x27;, &#x27;12&#x27;, &#x27;23&#x27;, &#x27;27&#x27;, &#x27;1&#x27;, &#x27;4&#x27;, &#x27;22&#x27;, &#x27;26&#x27;, &#x27;3&#x27;, &#x27;24&#x27;], &#x27;timestamp&#x27;: 1778659164071}
Details:
Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/scene_seg.json
Node error: SAM3MultipromptSegmentation</div>
</div>
<div class="failed-item">
<div class="failed-header">
<span class="failed-name">scene_seg_interactive</span>
<span class="failed-duration">6.67s</span>
</div>
<div class="failed-error">Workflow execution failed: {&#x27;prompt_id&#x27;: &#x27;5fb95b77-15b7-4159-a594-df4101d423a4&#x27;, &#x27;node_id&#x27;: &#x27;26&#x27;, &#x27;node_type&#x27;: &#x27;SAM3InteractiveCollector&#x27;, &#x27;executed&#x27;: [&#x27;12&#x27;, &#x27;1&#x27;], &#x27;exception_message&#x27;: &#x27;No module named \&#x27;transformers\&#x27;\n\nWorker traceback:\nTraceback (most recent call last):\n File &quot;/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py&quot;, line 1762, in main\n result = method(**inputs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py&quot;, line 1833, in EXECUTE_NORMALIZED\n to_return = cls.execute(*args, **kwargs)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_interactive.py&quot;, line 667, in execute\n sam3_model = get_or_build_model(sam3_model_config)\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py&quot;, line 31, in get_or_build_model\n from .sam3_model_patcher import SAM3UnifiedModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py&quot;, line 14, in &lt;module&gt;\n from comfy.model_patcher import ModelPatcher\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py&quot;, line 32, in &lt;module&gt;\n import comfy.hooks\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py&quot;, line 14, in &lt;module&gt;\n import comfy.lora\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py&quot;, line 23, in &lt;module&gt;\n import comfy.model_base\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py&quot;, line 61, in &lt;module&gt;\n import comfy.ldm.hidream_o1.model\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py&quot;, line 20, in &lt;module&gt;\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py&quot;, line 10, in &lt;module&gt;\n from comfy import sd1_clip\n File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py&quot;, line 3, in &lt;module&gt;\n from transformers import CLIPTokenizer\nModuleNotFoundError: No module named \&#x27;transformers\&#x27;\n\n&#x27;, &#x27;exception_type&#x27;: &#x27;comfy_env.isolation.workers.base.WorkerError&#x27;, &#x27;traceback&#x27;: [&#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 535, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 335, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 309, in _async_map_node_over_list\n await process_inputs(input_dict, i)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py&quot;, line 297, in process_inputs\n result = f(**inputs)\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py&quot;, line 556, in proxy\n result = worker.call_method(\n&#x27;, &#x27; File &quot;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py&quot;, line 674, in call_method\n raise WorkerError(\n&#x27;], &#x27;current_inputs&#x27;: {&#x27;multi_prompts_store&#x27;: [&#x27;[{&quot;positive_points&quot;:[{&quot;x&quot;:3348.288109906738,&quot;y&quot;:2452.2208696844737}],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 1&quot;},{&quot;positive_points&quot;:[],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 2&quot;}]&#x27;], &#x27;sam3_model_config&#x27;: [&quot;{&#x27;checkpoint_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors&#x27;, &#x27;bpe_path&#x27;: &#x27;/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz&#x27;, &#x27;precision&#x27;: &#x27;auto&#x27;, &#x27;dtype&#x27;: &#x27;bf16&#x27;, &#x27;compile&#x27;: False}&quot;], &#x27;image&#x27;: [&#x27;tensor([[[[0.9176, 0.8392, 0.7333],\n [0.9294, 0.8471, 0.7412],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8078, 0.6627, 0.4902],\n [0.8039, 0.6588, 0.4863],\n [0.8157, 0.6706, 0.4980]],\n\n [[0.9137, 0.8353, 0.7294],\n [0.9216, 0.8392, 0.7333],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8039, 0.6588, 0.4863],\n [0.8039, 0.6588, 0.4863],\n [0.8118, 0.6667, 0.4941]],\n\n [[0.9137, 0.8314, 0.7255],\n [0.9137, 0.8314, 0.7255],\n [0.9176, 0.8353, 0.7294],\n ...,\n [0.8078, 0.6627, 0.4902],\n [0.8118, 0.6667, 0.4941],\n [0.8039, 0.6588, 0.4863]],\n\n ...,\n\n [[0.8667, 0.6784, 0.4902],\n [0.8706, 0.6824, 0.4941],\n [0.8706, 0.6824, 0.4941],\n ...,\n [0.6471, 0.4431, 0.2549],\n [0.6392, 0.4353, 0.2471],\n [0.6471, 0.4431, 0.2549]],\n\n [[0.8588, 0.6706, 0.4824],\n [0.8667, 0.6784, 0.4902],\n [0.8706, 0.6824, 0.4941],\n ...,\n [0.6431, 0.4392, 0.2510],\n [0.6471, 0.4431, 0.2549],\n [0.6549, 0.4510, 0.2627]],\n\n [[0.8627, 0.6745, 0.4863],\n [0.8667, 0.6784, 0.4902],\n [0.8784, 0.6902, 0.5020],\n ...,\n [0.6353, 0.4314, 0.2431],\n [0.6431, 0.4392, 0.2510],\n [0.6392, 0.4353, 0.2471]]]])&#x27;], &#x27;unique_id&#x27;: [&#x27;26&#x27;], &#x27;prompt&#x27;: [&#x27;{\&#x27;1\&#x27;: {\&#x27;inputs\&#x27;: {\&#x27;image\&#x27;: \&#x27;image.png\&#x27;}, \&#x27;class_type\&#x27;: \&#x27;LoadImage\&#x27;, \&#x27;_meta\&#x27;: {\&#x27;title\&#x27;: \&#x27;Load Image\&#x27;}, \&#x27;is_changed\&#x27;: [\&#x27;72785412200dcb9f5c6bc4eaa3018172293f67836627708e6bce78150109af15\&#x27;]}, \&#x27;4\&#x27;: {\&#x27;inputs\&#x27;: {\&#x27;mask\&#x27;: [\&#x27;26\&#x27;, 0]}, \&#x27;class_type\&#x27;: \&#x27;MaskPreview\&#x27;, \&#x27;_meta\&#x27;: {\&#x27;title\&#x27;: \&#x27;Preview Mask\&#x27;}}, \&#x27;12\&#x27;: {\&#x27;inputs\&#x27;: {\&#x27;precision\&#x27;: \&#x27;auto\&#x27;, \&#x27;compile\&#x27;: False}, \&#x27;class_type\&#x27;: \&#x27;LoadSAM3Model\&#x27;, \&#x27;_meta\&#x27;: {\&#x27;title\&#x27;: \&#x27;(Down)Load SAM3 Model\&#x27;}}, \&#x27;26\&#x27;: {\&#x27;inputs\&#x27;: {\&#x27;multi_prompts_store\&#x27;: \&#x27;[{&quot;positive_points&quot;:[{&quot;x&quot;:3348.288109906738,&quot;y&quot;:2452.2208696844737}],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 1&quot;},{&quot;positive_points&quot;:[],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 2&quot;}]\&#x27;, \&#x27;canvas\&#x27;: \&#x27;\&#x27;, \&#x27;sam3_model_config\&#x27;: [\&#x27;12\&#x27;, 0], \&#x27;image\&#x27;: [\&#x27;1\&#x27;, 0]}, \&#x27;class_type\&#x27;: \&#x27;SAM3InteractiveCollector\&#x27;, \&#x27;_meta\&#x27;: {\&#x27;title\&#x27;: \&#x27;SAM3 Interactive Collector\&#x27;}}}&#x27;], &#x27;extra_pnginfo&#x27;: [&#x27;{\&#x27;workflow\&#x27;: {\&#x27;id\&#x27;: \&#x27;9e5b67d0-53dc-42aa-bdb7-541f1939e114\&#x27;, \&#x27;revision\&#x27;: 0, \&#x27;last_node_id\&#x27;: 26, \&#x27;last_link_id\&#x27;: 57, \&#x27;nodes\&#x27;: [{\&#x27;id\&#x27;: 12, \&#x27;type\&#x27;: \&#x27;LoadSAM3Model\&#x27;, \&#x27;pos\&#x27;: [619.424717299163, 120.03196674570798], \&#x27;size\&#x27;: [270, 134.65625], \&#x27;flags\&#x27;: {}, \&#x27;order\&#x27;: 0, \&#x27;mode\&#x27;: 0, \&#x27;inputs\&#x27;: [], \&#x27;outputs\&#x27;: [{\&#x27;name\&#x27;: \&#x27;sam3_model_config\&#x27;, \&#x27;type\&#x27;: \&#x27;SAM3_MODEL_CONFIG\&#x27;, \&#x27;links\&#x27;: [55]}], \&#x27;properties\&#x27;: {\&#x27;Node name for S&amp;R\&#x27;: \&#x27;LoadSAM3Model\&#x27;, \&#x27;cnr_id\&#x27;: \&#x27;comfyui-sam3\&#x27;, \&#x27;ver\&#x27;: \&#x27;82c8e4f88a6c0a9242712b827e05f5e67c4a90a7\&#x27;, \&#x27;aux_id\&#x27;: \&#x27;PozzettiAndrea/ComfyUI-SAM3\&#x27;}, \&#x27;widgets_values\&#x27;: [\&#x27;auto\&#x27;, False]}, {\&#x27;id\&#x27;: 1, \&#x27;type\&#x27;: \&#x27;LoadImage\&#x27;, \&#x27;pos\&#x27;: [488.1468326416015, 306.42935311583375], \&#x27;size\&#x27;: [274.078125, 340], \&#x27;flags\&#x27;: {}, \&#x27;order\&#x27;: 1, \&#x27;mode\&#x27;: 0, \&#x27;inputs\&#x27;: [], \&#x27;outputs\&#x27;: [{\&#x27;name\&#x27;: \&#x27;IMAGE\&#x27;, \&#x27;type\&#x27;: \&#x27;IMAGE\&#x27;, \&#x27;links\&#x27;: [56]}, {\&#x27;name\&#x27;: \&#x27;MASK\&#x27;, \&#x27;type\&#x27;: \&#x27;MASK\&#x27;, \&#x27;links\&#x27;: None}], \&#x27;properties\&#x27;: {\&#x27;Node name for S&amp;R\&#x27;: \&#x27;LoadImage\&#x27;, \&#x27;cnr_id\&#x27;: \&#x27;comfy-core\&#x27;, \&#x27;ver\&#x27;: \&#x27;0.3.72\&#x27;}, \&#x27;widgets_values\&#x27;: [\&#x27;image.png\&#x27;, \&#x27;image\&#x27;]}, {\&#x27;id\&#x27;: 26, \&#x27;type\&#x27;: \&#x27;SAM3InteractiveCollector\&#x27;, \&#x27;pos\&#x27;: [1010.2283851719152, 178.893439578179], \&#x27;size\&#x27;: [400, 569], \&#x27;flags\&#x27;: {}, \&#x27;order\&#x27;: 2, \&#x27;mode\&#x27;: 0, \&#x27;inputs\&#x27;: [{\&#x27;name\&#x27;: \&#x27;sam3_model_config\&#x27;, \&#x27;type\&#x27;: \&#x27;SAM3_MODEL_CONFIG\&#x27;, \&#x27;link\&#x27;: 55}, {\&#x27;name\&#x27;: \&#x27;image\&#x27;, \&#x27;type\&#x27;: \&#x27;IMAGE\&#x27;, \&#x27;link\&#x27;: 56}], \&#x27;outputs\&#x27;: [{\&#x27;name\&#x27;: \&#x27;masks\&#x27;, \&#x27;type\&#x27;: \&#x27;MASK\&#x27;, \&#x27;links\&#x27;: [57]}, {\&#x27;name\&#x27;: \&#x27;visualization\&#x27;, \&#x27;type\&#x27;: \&#x27;IMAGE\&#x27;, \&#x27;links\&#x27;: None}, {\&#x27;name\&#x27;: \&#x27;multi_prompts\&#x27;, \&#x27;type\&#x27;: \&#x27;SAM3_MULTI_PROMPTS\&#x27;, \&#x27;links\&#x27;: None}], \&#x27;properties\&#x27;: {\&#x27;Node name for S&amp;R\&#x27;: \&#x27;SAM3InteractiveCollector\&#x27;, \&#x27;cnr_id\&#x27;: \&#x27;comfyui-sam3\&#x27;, \&#x27;ver\&#x27;: \&#x27;c7636fa4a0b8c0fb07aa01f0c7749ebd5f9c92f3\&#x27;}, \&#x27;widgets_values\&#x27;: [\&#x27;[{&quot;positive_points&quot;:[{&quot;x&quot;:3348.288109906738,&quot;y&quot;:2452.2208696844737}],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 1&quot;},{&quot;positive_points&quot;:[],&quot;negative_points&quot;:[],&quot;positive_boxes&quot;:[],&quot;negative_boxes&quot;:[],&quot;name&quot;:&quot;Prompt 2&quot;}]\&#x27;, \&#x27;\&#x27;]}, {\&#x27;id\&#x27;: 4, \&#x27;type\&#x27;: \&#x27;MaskPreview\&#x27;, \&#x27;pos\&#x27;: [1509.2821361303925, 266.63965000030805], \&#x27;size\&#x27;: [225, 258], \&#x27;flags\&#x27;: {}, \&#x27;order\&#x27;: 3, \&#x27;mode\&#x27;: 0, \&#x27;inputs\&#x27;: [{\&#x27;name\&#x27;: \&#x27;mask\&#x27;, \&#x27;type\&#x27;: \&#x27;MASK\&#x27;, \&#x27;link\&#x27;: 57}], \&#x27;outputs\&#x27;: [], \&#x27;properties\&#x27;: {\&#x27;Node name for S&amp;R\&#x27;: \&#x27;MaskPreview\&#x27;, \&#x27;cnr_id\&#x27;: \&#x27;comfy-core\&#x27;, \&#x27;ver\&#x27;: \&#x27;0.3.72\&#x27;}, \&#x27;widgets_values\&#x27;: []}], \&#x27;links\&#x27;: [[55, 12, 0, 26, 0, \&#x27;SAM3_MODEL_CONFIG\&#x27;], [56, 1, 0, 26, 1, \&#x27;IMAGE\&#x27;], [57, 26, 0, 4, 0, \&#x27;MASK\&#x27;]], \&#x27;groups\&#x27;: [], \&#x27;config\&#x27;: {}, \&#x27;extra\&#x27;: {\&#x27;ds\&#x27;: {\&#x27;scale\&#x27;: 1.2385275239783924, \&#x27;offset\&#x27;: [-570.0951003265552, 14.632739985499132]}, \&#x27;frontendVersion\&#x27;: \&#x27;1.43.18\&#x27;, \&#x27;workflowRendererVersion\&#x27;: \&#x27;LG\&#x27;, \&#x27;VHS_latentpreview\&#x27;: False, \&#x27;VHS_latentpreviewrate\&#x27;: 0, \&#x27;VHS_MetadataImage\&#x27;: True, \&#x27;VHS_KeepIntermediate\&#x27;: True}, \&#x27;version\&#x27;: 0.4}}&#x27;]}, &#x27;current_outputs&#x27;: [&#x27;12&#x27;, &#x27;4&#x27;, &#x27;26&#x27;, &#x27;1&#x27;], &#x27;timestamp&#x27;: 1778659171697}
Details:
Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/scene_seg_interactive.json
Node error: SAM3InteractiveCollector</div>
</div>
</div>
<div class="models-section">
<div class="section-header">
<h2 class="section-title">Downloaded Models</h2>
<span class="models-total">1 files &middot; 3.2 GB</span>
</div>
<details class="models-folder" open>
<summary class="models-folder-header">
<span class="models-folder-name">models/sam3/</span>
<span class="models-folder-meta">
<span class="models-folder-size">3.2 GB</span>
</span>
</summary>
<div class="models-file-list">
<div class="models-file"><span class="models-file-path">sam3.safetensors</span><span class="models-file-size">3.2 GB</span></div>
</div>
</details>
</div>
</div>
<div class="lightbox" id="lightbox">
<button class="lightbox-close" onclick="closeLightbox()">&times;</button>
<button class="lightbox-nav lightbox-nav-left" onclick="navigateLightbox(-1)">&#8249;</button>
<button class="lightbox-nav lightbox-nav-right" onclick="navigateLightbox(1)">&#8250;</button>
<div class="lightbox-content">
<img id="lightbox-img" src="" alt="">
<video id="lightbox-video" controls preload="metadata" style="display:none; max-width:90vw; max-height:80vh; background:#000;"></video>
<div class="video-player" id="video-player">
<div class="video-slider-container">
<div id="video-slider"></div>
</div>
<div class="video-controls">
<span class="video-frame-counter" id="video-frame-counter">0.0s / 0.0s</span>
</div>
</div>
<div class="resource-graph" id="resource-graph">
<div class="resource-graph-title">Resource Usage</div>
<canvas id="resource-canvas"></canvas>
<div class="resource-legend">
<span><span class="dot ram"></span> RAM (GB)</span>
<span id="gpu-legend" style="display:none"><span class="dot gpu"></span> VRAM (GB)</span>
</div>
</div>
<div class="lightbox-info">
<div>
<span class="lightbox-title" id="lightbox-title"></span>
<span class="lightbox-hardware" id="lightbox-hardware"></span>
</div>
<div class="lightbox-meta">
<span class="lightbox-badge" id="lightbox-badge"></span>
<span class="lightbox-duration" id="lightbox-duration"></span>
</div>
</div>
<pre class="lightbox-log" id="lightbox-log"></pre>
</div>
</div>
<div class="img-overlay" id="img-overlay">
<img id="img-overlay-content" src="" alt="">
</div>
<footer>
Generated by <a href="https://github.com/PozzettiAndrea/comfy-test">comfy-test</a>
</footer>
<script>
function setView(mode) {
const grid = document.getElementById('workflow-grid');
grid.className = mode === 'list' ? 'workflow-grid view-list' : 'workflow-grid';
document.querySelectorAll('.view-controls .view-btn').forEach(btn => {
btn.classList.toggle('active', btn.textContent.trim().toLowerCase() === mode);
});
}
const workflowData = {"image_seg_point": {"src": "", "title": "image_seg_point", "status": "fail", "duration": "43.42", "log": "Capturing execution frames: image_seg_point.json\n [ComfyUI] [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/widgetInputs.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 6 nodes\n [ComfyUI] Node 1: LoadImage\n [ComfyUI] Inputs: {\"image\": \"example_image.jpg\"}\n [ComfyUI] Node 15: SAM3PointCollector\n [ComfyUI] Inputs: {\"points_store\": \"{\\\"positive\\\":[{\\\"x\\\":426.27735719657574,\\\"y\\\":321.42611685978835},{\\\"x\\\":417.13743597288953,\\\"y\\\":407.3413796907987},{\\\"x\\\":431.76130993078743,\\\"y\\\":549.9241563039649}],\\\"negative\\\"\n [ComfyUI] Node 28: PreviewImage\n [ComfyUI] Inputs: {\"images\": [\"31\", 2]}\n [ComfyUI] Node 29: MaskPreview\n [ComfyUI] Inputs: {\"mask\": [\"31\", 0]}\n [ComfyUI] Node 30: LoadSAM3Model\n [ComfyUI] Inputs: {\"precision\": \"auto\", \"compile\": false}\n [ComfyUI] Node 31: SAM3Segmentation\n [ComfyUI] Inputs: {\"refinement_iterations\": 0, \"use_multimask\": true, \"output_best_mask\": true, \"sam3_model_config\": [\"30\", 0], \"image\": [\"1\", 0], \"positive_points\": [\"15\", 0], \"negative_points\": [\"15\", 1]}\n [ComfyUI] Generated prompt_id: 26bb1e83-b20c-4669-a548-74fbc7e49e5e\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] [comfy-env] SubprocessWorker: /Users/runner/.ce/.pixi/envs/sam3-nodes/bin/python\n [ComfyUI] [comfy-env] Running SAM3PointCollector: points_store: '{\"positive\":[{\"x\":426.27735719657574,\"y\":321.42611685978..., coordinates: '[{\"x\":426.27735719657574,\"y\":321.42611685978835},{\"x\":41..., neg_coordinates: '[]', image: torch.float32 [1,720,1280,3] cpu\n [ComfyUI] [comfy-env] env_vars: {'PYTORCH_ENABLE_MPS_FALLBACK': '1', 'COMFYUI_BASE': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI'}\n [ComfyUI] [SubprocessWorker] call_method: nodes.sam3_interactive.SAM3PointCollector.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] python: /Users/runner/.ce/.pixi/envs/sam3-nodes/bin/python\n [ComfyUI] [ComfyUI-SAM3] sys_path sent to worker: ['/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI', '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3', '/Users/runner/.ce/.pixi/envs/sam3-nodes/lib/python3.1/site-packages', '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3']\n [ComfyUI] [SubprocessWorker] is_pixi=True, python=/Users/runner/.ce/.pixi/envs/sam3-nodes/bin/python\n [ComfyUI] [SubprocessWorker] launching cmd=['/Users/runner/.pixi/bin/pixi', 'run', '--as-is', '--manifest-path', '/Users/runner/.ce/pixi.toml', '-e', 'sam3-nodes', 'python', '/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py', 'unix:///var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy_worker_a9981f347c62.sock']...\n [ComfyUI] [SubprocessWorker] socket_addr=unix:///var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy_worker_a9981f347c62.sock exists=True\n Frame 2 saved (frame_001.jpg, t=2.2s)\n [capture-periodic] freeze=1ms shot=99ms unfreeze=1ms saved=True\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=1 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 720, 1280, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] SAM3PointCollector done (3.48s): result: NodeOutput\n [ComfyUI] [comfy-env] Running LoadSAM3Model: precision: 'auto', compile: False\n [ComfyUI] [SubprocessWorker] call_method: nodes.load_model.LoadSAM3Model.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=2 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Model not found at /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors, downloading from HuggingFace...\n Node executed (1 total), capturing...\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Downloading sam3.safetensors from apozz/sam3-safetensors...\n Frame 3 saved (frame_002.jpg, t=4.0s)\n [capture-node] freeze=1ms shot=87ms unfreeze=5ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=50 t=5.8s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.8/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=50% browser_rss=0.59GB\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 4 saved (frame_003.jpg, t=6.1s)\n [capture-periodic] freeze=3ms shot=114ms unfreeze=4ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 10%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 5 saved (frame_004.jpg, t=8.3s)\n [capture-periodic] freeze=3ms shot=130ms unfreeze=3ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 6 saved (frame_005.jpg, t=10.5s)\n [capture-periodic] freeze=4ms shot=103ms unfreeze=5ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 20%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=100 t=11.6s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.8/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=61% browser_rss=0.60GB\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 7 saved (frame_006.jpg, t=12.7s)\n [capture-periodic] freeze=2ms shot=100ms unfreeze=4ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 30%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 8 saved (frame_007.jpg, t=14.8s)\n [capture-periodic] freeze=6ms shot=113ms unfreeze=2ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 40%\n Frame 9 saved (frame_008.jpg, t=17.0s)\n [capture-periodic] freeze=5ms shot=126ms unfreeze=4ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=150 t=17.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=15 ram=3.8/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=72% browser_rss=0.60GB\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 10 saved (frame_009.jpg, t=19.2s)\n [capture-periodic] freeze=4ms shot=136ms unfreeze=3ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 50%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 11 saved (frame_010.jpg, t=21.4s)\n [capture-periodic] freeze=2ms shot=113ms unfreeze=3ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=200 t=23.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=2 ram=3.8/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=69% browser_rss=0.59GB\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 60%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 12 saved (frame_011.jpg, t=23.6s)\n [capture-periodic] freeze=2ms shot=111ms unfreeze=4ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 13 saved (frame_012.jpg, t=25.8s)\n [capture-periodic] freeze=1ms shot=99ms unfreeze=2ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 70%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 14 saved (frame_013.jpg, t=27.9s)\n [capture-periodic] freeze=3ms shot=112ms unfreeze=2ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=250 t=28.9s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.8/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=71% browser_rss=0.52GB\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 80%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 15 saved (frame_014.jpg, t=30.1s)\n [capture-periodic] freeze=3ms shot=128ms unfreeze=2ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 90%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n Frame 16 saved (frame_015.jpg, t=32.4s)\n [capture-periodic] freeze=3ms shot=121ms unfreeze=2ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [capture-loop] iter=300 t=34.6s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=6 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=67% browser_rss=0.52GB\n Frame 17 saved (frame_016.jpg, t=34.6s)\n [capture-periodic] freeze=2ms shot=118ms unfreeze=3ms saved=True\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Download progress: 100%\n [ComfyUI] [SubprocessWorker] callback 'report_progress' from call_id=2\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Downloaded sam3.safetensors\n [ComfyUI] [worker:ComfyUI-SAM3] [SAM3] Model downloaded successfully\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] LoadSAM3Model done (31.33s): result: NodeOutput\n [ComfyUI] [comfy-env] Running SAM3Segmentation: refinement_iterations: 0, use_multimask: True, output_best_mask: True, sam3_model_config: dict, image: torch.float32 [1,720,1280,3] cpu, positive_points: dict, negative_points: dict\n [ComfyUI] [SubprocessWorker] call_method: nodes.segmentation.SAM3Segmentation.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=3 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 720, 1280, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] objc[3727]: Class AVFFrameReceiver is implemented in both /Users/runner/.ce/.pixi/envs/sam3-nodes/lib/libavdevice.62.3.101.dylib (0x132bdc7a8) and /Users/runner/.ce/.pixi/envs/sam3-nodes/lib/python3.10/site-packages/cv2/.dylibs/libavdevice.61.3.100.dylib (0x1565dc3a8). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.\n [ComfyUI] objc[3727]: Class AVFAudioReceiver is implemented in both /Users/runner/.ce/.pixi/envs/sam3-nodes/lib/libavdevice.62.3.101.dylib (0x132bdc7f8) and /Users/runner/.ce/.pixi/envs/sam3-nodes/lib/python3.10/site-packages/cv2/.dylibs/libavdevice.61.3.100.dylib (0x1565dc3f8). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed.\n [ComfyUI] [SubprocessWorker] got response: error\n [ComfyUI] !!! Exception during processing !!! No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 469, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\n [ComfyUI] output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\n [ComfyUI] return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\n [ComfyUI] await process_inputs(input_dict, i)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\n [ComfyUI] result = f(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\n [ComfyUI] result = worker.call_method(\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\n [ComfyUI] raise WorkerError(\n [ComfyUI] comfy_env.isolation.workers.base.WorkerError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 469, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] \n [ComfyUI] Prompt executed in 36.69 seconds\n Frame 18 saved (frame_017.jpg, t=36.8s)\n [capture-periodic] freeze=2ms shot=154ms unfreeze=15ms saved=True\n Execution complete (t=37.1s)\n Execution error: {'prompt_id': 'feb39149-ea8d-4db4-bc83-89e857ec9581', 'node_id': '31', 'node_type': 'SAM3Segmentation', 'executed': ['30', '15', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 469, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'refinement_iterations': [0], 'use_multimask': [True], 'output_best_mask': [True], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'auto', 'dtype': 'bf16', 'compile': False}\"], 'image': ['tensor([[[[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3176, 0.5804, 0.7216],\\n [0.3333, 0.6039, 0.7451],\\n [0.3529, 0.6235, 0.7647]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3137, 0.5765, 0.7176],\\n [0.3137, 0.5843, 0.7255],\\n [0.3255, 0.5961, 0.7373]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3922, 0.5333, 0.6275],\\n [0.3922, 0.5294, 0.6235],\\n [0.3961, 0.5333, 0.6275]],\\n\\n ...,\\n\\n [[0.4941, 0.4863, 0.4157],\\n [0.4941, 0.4863, 0.4157],\\n [0.4980, 0.4902, 0.4196],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5098, 0.5020, 0.4314],\\n [0.5098, 0.5020, 0.4314],\\n [0.5137, 0.5059, 0.4353],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5176, 0.5098, 0.4392],\\n [0.5216, 0.5137, 0.4431],\\n [0.5255, 0.5176, 0.4471],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]]]])'], 'positive_points': [\"{'points': [[0.3330291853098248, 0.4464251623052616], [0.32588862185381995, 0.5657519162372204], [0.3373135233834277, 0.7637835504221735]], 'labels': [1, 1, 1]}\"], 'negative_points': [\"{'points': [], 'labels': []}\"]}, 'current_outputs': ['29', '30', '28', '15', '1', '31'], 'timestamp': 1778659151864}\n Status: FAILED\n Error: Workflow execution failed: {'prompt_id': 'feb39149-ea8d-4db4-bc83-89e857ec9581', 'node_id': '31', 'node_type': 'SAM3Segmentation', 'executed': ['30', '15', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 469, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'refinement_iterations': [0], 'use_multimask': [True], 'output_best_mask': [True], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'auto', 'dtype': 'bf16', 'compile': False}\"], 'image': ['tensor([[[[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3176, 0.5804, 0.7216],\\n [0.3333, 0.6039, 0.7451],\\n [0.3529, 0.6235, 0.7647]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3137, 0.5765, 0.7176],\\n [0.3137, 0.5843, 0.7255],\\n [0.3255, 0.5961, 0.7373]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3922, 0.5333, 0.6275],\\n [0.3922, 0.5294, 0.6235],\\n [0.3961, 0.5333, 0.6275]],\\n\\n ...,\\n\\n [[0.4941, 0.4863, 0.4157],\\n [0.4941, 0.4863, 0.4157],\\n [0.4980, 0.4902, 0.4196],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5098, 0.5020, 0.4314],\\n [0.5098, 0.5020, 0.4314],\\n [0.5137, 0.5059, 0.4353],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5176, 0.5098, 0.4392],\\n [0.5216, 0.5137, 0.4431],\\n [0.5255, 0.5176, 0.4471],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]]]])'], 'positive_points': [\"{'points': [[0.3330291853098248, 0.4464251623052616], [0.32588862185381995, 0.5657519162372204], [0.3373135233834277, 0.7637835504221735]], 'labels': [1, 1, 1]}\"], 'negative_points': [\"{'points': [], 'labels': []}\"]}, 'current_outputs': ['29', '30', '28', '15', '1', '31'], 'timestamp': 1778659151864}\n Details: Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/image_seg_point.json\nNode error: SAM3Segmentation", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit", "cpu": "arm"}}, "image_seg_text": {"src": "", "title": "image_seg_text", "status": "fail", "duration": "4.99", "log": "Capturing execution frames: image_seg_text.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 5 nodes\n [ComfyUI] Node 1: LoadImage\n [ComfyUI] Inputs: {\"image\": \"example_image.jpg\"}\n [ComfyUI] Node 3: PreviewImage\n [ComfyUI] Inputs: {\"images\": [\"15\", 1]}\n [ComfyUI] Node 4: MaskPreview\n [ComfyUI] Inputs: {\"mask\": [\"15\", 0]}\n [ComfyUI] Node 12: LoadSAM3Model\n [ComfyUI] Inputs: {\"precision\": \"fp32\", \"compile\": false}\n [ComfyUI] Node 15: SAM3Grounding\n [ComfyUI] Inputs: {\"confidence_threshold\": 0.2, \"text_prompt\": \"child\", \"max_detections\": -1, \"sam3_model_config\": [\"12\", 0], \"image\": [\"1\", 0]}\n [ComfyUI] Generated prompt_id: 05393566-8c64-45b1-a2b5-9a4b49daa7d0\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] [comfy-env] Running LoadSAM3Model: precision: 'fp32', compile: False\n [ComfyUI] [SubprocessWorker] call_method: nodes.load_model.LoadSAM3Model.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=4 sending call_method\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] LoadSAM3Model done (0.00s): result: NodeOutput\n [ComfyUI] [comfy-env] Running SAM3Grounding: confidence_threshold: 0.2, text_prompt: 'child', max_detections: -1, sam3_model_config: dict, image: torch.float32 [1,720,1280,3] cpu\n [ComfyUI] [SubprocessWorker] call_method: nodes.segmentation.SAM3Grounding.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=5 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 720, 1280, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 720, 1280, 3])\n [ComfyUI] [SubprocessWorker] got response: error\n [ComfyUI] !!! Exception during processing !!! No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 86, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\n [ComfyUI] output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\n [ComfyUI] return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\n [ComfyUI] await process_inputs(input_dict, i)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\n [ComfyUI] result = f(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\n [ComfyUI] result = worker.call_method(\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\n [ComfyUI] raise WorkerError(\n [ComfyUI] comfy_env.isolation.workers.base.WorkerError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 86, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] \n [ComfyUI] Prompt executed in 0.03 seconds\n Execution complete (t=0.3s)\n Execution error: {'prompt_id': 'b3cb8b18-c610-4a74-b79f-40cb18370e25', 'node_id': '15', 'node_type': 'SAM3Grounding', 'executed': ['12', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 86, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'confidence_threshold': [0.2], 'text_prompt': ['child'], 'max_detections': [-1], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'fp32', 'dtype': 'fp32', 'compile': False}\"], 'image': ['tensor([[[[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3176, 0.5804, 0.7216],\\n [0.3333, 0.6039, 0.7451],\\n [0.3529, 0.6235, 0.7647]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3137, 0.5765, 0.7176],\\n [0.3137, 0.5843, 0.7255],\\n [0.3255, 0.5961, 0.7373]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3922, 0.5333, 0.6275],\\n [0.3922, 0.5294, 0.6235],\\n [0.3961, 0.5333, 0.6275]],\\n\\n ...,\\n\\n [[0.4941, 0.4863, 0.4157],\\n [0.4941, 0.4863, 0.4157],\\n [0.4980, 0.4902, 0.4196],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5098, 0.5020, 0.4314],\\n [0.5098, 0.5020, 0.4314],\\n [0.5137, 0.5059, 0.4353],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5176, 0.5098, 0.4392],\\n [0.5216, 0.5137, 0.4431],\\n [0.5255, 0.5176, 0.4471],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]]]])']}, 'current_outputs': ['12', '15', '1', '4', '3'], 'timestamp': 1778659157315}\n Status: FAILED\n Error: Workflow execution failed: {'prompt_id': 'b3cb8b18-c610-4a74-b79f-40cb18370e25', 'node_id': '15', 'node_type': 'SAM3Grounding', 'executed': ['12', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 86, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'confidence_threshold': [0.2], 'text_prompt': ['child'], 'max_detections': [-1], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'fp32', 'dtype': 'fp32', 'compile': False}\"], 'image': ['tensor([[[[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3176, 0.5804, 0.7216],\\n [0.3333, 0.6039, 0.7451],\\n [0.3529, 0.6235, 0.7647]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3137, 0.5765, 0.7176],\\n [0.3137, 0.5843, 0.7255],\\n [0.3255, 0.5961, 0.7373]],\\n\\n [[0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n [0.2902, 0.4667, 0.5961],\\n ...,\\n [0.3922, 0.5333, 0.6275],\\n [0.3922, 0.5294, 0.6235],\\n [0.3961, 0.5333, 0.6275]],\\n\\n ...,\\n\\n [[0.4941, 0.4863, 0.4157],\\n [0.4941, 0.4863, 0.4157],\\n [0.4980, 0.4902, 0.4196],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5098, 0.5020, 0.4314],\\n [0.5098, 0.5020, 0.4314],\\n [0.5137, 0.5059, 0.4353],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]],\\n\\n [[0.5176, 0.5098, 0.4392],\\n [0.5216, 0.5137, 0.4431],\\n [0.5255, 0.5176, 0.4471],\\n ...,\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059],\\n [0.5647, 0.5608, 0.5059]]]])']}, 'current_outputs': ['12', '15', '1', '4', '3'], 'timestamp': 1778659157315}\n Details: Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/image_seg_text.json\nNode error: SAM3Grounding", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit", "cpu": "arm"}}, "scene_seg": {"src": "", "title": "scene_seg", "status": "fail", "duration": "7.17", "log": "Capturing execution frames: scene_seg.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 10 nodes\n [ComfyUI] Node 1: LoadImage\n [ComfyUI] Inputs: {\"image\": \"image.png\"}\n [ComfyUI] Node 3: PreviewImage\n [ComfyUI] Inputs: {\"images\": [\"27\", 1]}\n [ComfyUI] Node 4: MaskPreview\n [ComfyUI] Inputs: {\"mask\": [\"27\", 0]}\n [ComfyUI] Node 12: LoadSAM3Model\n [ComfyUI] Inputs: {\"precision\": \"fp32\", \"compile\": false}\n [ComfyUI] Node 20: SAM3MultiRegionCollector\n [ComfyUI] Inputs: {\"multi_prompts_store\": \"[{\\\"positive_points\\\":[{\\\"x\\\":5052.74953932266,\\\"y\\\":2847.0600693869637},{\\\"x\\\":4932.510591392486,\\\"y\\\":2953.9413227753366},{\\\"x\\\":4718.752461738845,\\\"y\\\":2967.301479448883},{\n [ComfyUI] Node 22: MultibandFromBatch\n [ComfyUI] Inputs: {\"images\": [\"1\", 0], \"masks\": [\"27\", 0]}\n Queuing workflow for execution...\n [ComfyUI] Node 23: MultibandSave\n [ComfyUI] Inputs: {\"file_path\": \"output/multiband\", \"format\": \"npz\", \"multiband\": [\"26\", 0]}\n [ComfyUI] Node 24: MultibandPreview\n [ComfyUI] Inputs: {\"channel_index\": 0, \"multiband\": [\"26\", 0]}\n [ComfyUI] Node 26: MultibandResize\n [ComfyUI] Inputs: {\"upscale_method\": \"nearest-exact\", \"width\": 900, \"height\": 600, \"crop\": \"center\", \"multiband\": [\"22\", 0]}\n [ComfyUI] Node 27: SAM3MultipromptSegmentation\n [ComfyUI] Inputs: {\"refinement_iterations\": 0, \"use_multimask\": false, \"sam3_model_config\": [\"12\", 0], \"image\": [\"1\", 0], \"multi_prompts\": [\"20\", 0]}\n [ComfyUI] Generated prompt_id: fa6c4fb3-8ac5-456b-bdc4-e6cca1f9df68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] [comfy-env] Running SAM3MultiRegionCollector: multi_prompts_store: '[{\"positive_points\":[{\"x\":5052.74953932266,\"y\":2847.0600..., image: torch.float32 [1,4480,6720,3] cpu\n [ComfyUI] [SubprocessWorker] call_method: nodes.sam3_interactive.SAM3MultiRegionCollector.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=6 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 4480, 6720, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] SAM3MultiRegionCollector done (0.39s): result: NodeOutput\n [ComfyUI] [comfy-env] Running LoadSAM3Model: precision: 'fp32', compile: False\n [ComfyUI] [SubprocessWorker] call_method: nodes.load_model.LoadSAM3Model.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=7 sending call_method\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] LoadSAM3Model done (0.01s): result: NodeOutput\n [ComfyUI] [comfy-env] Running SAM3MultipromptSegmentation: refinement_iterations: 0, use_multimask: False, sam3_model_config: dict, image: torch.float32 [1,4480,6720,3] cpu, multi_prompts: list[7]\n [ComfyUI] [SubprocessWorker] call_method: nodes.segmentation.SAM3MultipromptSegmentation.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=8 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 4480, 6720, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] got response: error\n [ComfyUI] !!! Exception during processing !!! No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 695, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\n [ComfyUI] output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\n [ComfyUI] return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\n [ComfyUI] await process_inputs(input_dict, i)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\n [ComfyUI] result = f(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\n [ComfyUI] result = worker.call_method(\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\n [ComfyUI] raise WorkerError(\n [ComfyUI] comfy_env.isolation.workers.base.WorkerError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 695, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] \n [ComfyUI] Prompt executed in 1.41 seconds\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=2.1s)\n [capture-node] freeze=117ms shot=168ms unfreeze=0ms saved=True\n Execution complete (t=2.1s)\n Execution error: {'prompt_id': 'e4e71f1c-6541-4d9f-9d23-3a7495ec1415', 'node_id': '27', 'node_type': 'SAM3MultipromptSegmentation', 'executed': ['12', '20', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 695, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'refinement_iterations': [0], 'use_multimask': [False], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'fp32', 'dtype': 'fp32', 'compile': False}\"], 'image': ['tensor([[[[0.9176, 0.8392, 0.7333],\\n [0.9294, 0.8471, 0.7412],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8039, 0.6588, 0.4863],\\n [0.8157, 0.6706, 0.4980]],\\n\\n [[0.9137, 0.8353, 0.7294],\\n [0.9216, 0.8392, 0.7333],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8039, 0.6588, 0.4863],\\n [0.8039, 0.6588, 0.4863],\\n [0.8118, 0.6667, 0.4941]],\\n\\n [[0.9137, 0.8314, 0.7255],\\n [0.9137, 0.8314, 0.7255],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8118, 0.6667, 0.4941],\\n [0.8039, 0.6588, 0.4863]],\\n\\n ...,\\n\\n [[0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6471, 0.4431, 0.2549],\\n [0.6392, 0.4353, 0.2471],\\n [0.6471, 0.4431, 0.2549]],\\n\\n [[0.8588, 0.6706, 0.4824],\\n [0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6431, 0.4392, 0.2510],\\n [0.6471, 0.4431, 0.2549],\\n [0.6549, 0.4510, 0.2627]],\\n\\n [[0.8627, 0.6745, 0.4863],\\n [0.8667, 0.6784, 0.4902],\\n [0.8784, 0.6902, 0.5020],\\n ...,\\n [0.6353, 0.4314, 0.2431],\\n [0.6431, 0.4392, 0.2510],\\n [0.6392, 0.4353, 0.2471]]]])'], 'multi_prompts': [\"[{'id': 0, 'positive_points': {'points': [[0.7518972528753959, 0.6355044797738758], [0.7340045522905485, 0.6593619024052091], [0.7021953068063758, 0.6623440802341257], [0.6902668397498108, 0.677254969378709], [0.668397983479442, 0.6742727915497924], [0.7180999295484621, 0.6176114128003758], [0.7180999295484621, 0.572878745366626], [0.7439449415043526, 0.5311282557617927], [0.7240641630767446, 0.5609500340509593], [0.6982191511208541, 0.5609500340509593]], 'labels': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.7141237738629407, 0.6056827014847093, 0.15109391604982114, 0.19085938105066613]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 1, 'positive_points': {'points': [[0.6513952517072837, 0.6001522443905642], [0.6354008929467748, 0.6921217188777309], [0.6433980723270292, 0.8680633222444846], [0.8859791801947458, 0.884058013459644], [0.9046392654153393, 0.6041509171943541], [0.9046392654153393, 0.5441708251375063], [0.8060073863922018, 0.5201787883147672]], 'labels': [1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [[0.7180384132094035, 0.5921548987829846], [0.7180384132094035, 0.5921548987829846], [0.7393642248900819, 0.6601323364474121], [0.7393642248900819, 0.6601323364474121], [0.7446956778102515, 0.6841243732701512], [0.7446956778102515, 0.6841243732701512], [0.670055336927877, 0.6721283548587816], [0.670055336927877, 0.6721283548587816], [0.6913811486085556, 0.608149589998144], [0.6913811486085556, 0.608149589998144], [0.6887154221484707, 0.552168170745086], [0.6887154221484707, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7366984984299972, 0.552168170745086], [0.7366984984299972, 0.552168170745086]], 'labels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'positive_boxes': {'boxes': [[0.7713529424110994, 0.7141144192985751, 0.31455572229000606, 0.4198606443979348]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 2, 'positive_points': {'points': [[0.5279788816577594, 0.8586378093779201], [0.5097671062510242, 0.6517998210195123], [0.4733435554375539, 0.64789721746558], [0.37968299620291596, 0.64789721746558], [0.39529308940868896, 0.8313195845003946], [0.5565973858683432, 0.8586378093779201], [0.569605796873154, 0.6439946139116478]], 'labels': [1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [[0.4863519664423647, 0.7415597027599534], [0.4863519664423647, 0.7415597027599534], [0.4837502842414026, 0.8508326022700556], [0.4837502842414026, 0.8508326022700556], [0.4473267334279323, 0.8664430164857846], [0.4473267334279323, 0.8664430164857846], [0.43431832242312146, 0.628384199695919], [0.43431832242312146, 0.628384199695919], [0.5123687884519864, 0.5893581641565967], [0.5123687884519864, 0.5893581641565967], [0.5019620596481378, 0.6361894068037834], [0.5019620596481378, 0.6361894068037834], [0.4291149580211971, 0.6400920103577157], [0.4291149580211971, 0.6400920103577157]], 'labels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'positive_boxes': {'boxes': [[0.47724607873899716, 0.7591214187526485, 0.21593962267985972, 0.24586402389773]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 3, 'positive_points': {'points': [[0.43642532993691785, 0.595717523200948]], 'labels': [1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.4324084720788661, 0.6137937552745099, 0.06426972572882772, 0.07230492829424773]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 4, 'positive_points': {'points': [[0.5006950556657457, 0.595717523200948]], 'labels': [1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.5027034845947715, 0.5716158804361987, 0.09238773073518991, 0.1687114993532448]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 5, 'positive_points': {'points': [[0.9264819886192297, 0.384828149009392], [0.7939256793035224, 0.37880273831820466], [0.7939256793035224, 0.11368466790596292], [0.9304988464772813, 0.10765925721477561], [0.874262836464557, 0.22214206034733455], [0.8501616893162467, 0.22214206034733455], [0.846144831458195, 0.31854863140633155], [0.8983639836128675, 0.3004723993327696], [0.8943471257548158, 0.20406582827377262], [0.8943471257548158, 0.12573548928833755], [0.8421279736001431, 0.1558625427442741], [0.830077400025988, 0.28842157795039497], [0.8220436843098845, 0.33059945278870617]], 'labels': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.8662291207484536, 0.25829452449445844, 0.18477546147037982, 0.31332135594174026]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 6, 'positive_points': {'points': [[0.7045792285036274, 0.9568116711293354], [0.6789425589101554, 0.9568116711293354], [0.6569682706871793, 0.9348369322210276], [0.6716177961691634, 0.9293432474939506], [0.6569682706871793, 0.9403306169481045], [0.7082416098741234, 0.9403306169481045]], 'labels': [1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.6789425589101554, 0.943077459311643, 0.10254667837388842, 0.07141790145200044]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}]\"]}, 'current_outputs': ['20', '12', '23', '27', '1', '4', '22', '26', '3', '24'], 'timestamp': 1778659164071}\n Status: FAILED\n Error: Workflow execution failed: {'prompt_id': 'e4e71f1c-6541-4d9f-9d23-3a7495ec1415', 'node_id': '27', 'node_type': 'SAM3MultipromptSegmentation', 'executed': ['12', '20', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/segmentation.py\", line 695, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'refinement_iterations': [0], 'use_multimask': [False], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'fp32', 'dtype': 'fp32', 'compile': False}\"], 'image': ['tensor([[[[0.9176, 0.8392, 0.7333],\\n [0.9294, 0.8471, 0.7412],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8039, 0.6588, 0.4863],\\n [0.8157, 0.6706, 0.4980]],\\n\\n [[0.9137, 0.8353, 0.7294],\\n [0.9216, 0.8392, 0.7333],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8039, 0.6588, 0.4863],\\n [0.8039, 0.6588, 0.4863],\\n [0.8118, 0.6667, 0.4941]],\\n\\n [[0.9137, 0.8314, 0.7255],\\n [0.9137, 0.8314, 0.7255],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8118, 0.6667, 0.4941],\\n [0.8039, 0.6588, 0.4863]],\\n\\n ...,\\n\\n [[0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6471, 0.4431, 0.2549],\\n [0.6392, 0.4353, 0.2471],\\n [0.6471, 0.4431, 0.2549]],\\n\\n [[0.8588, 0.6706, 0.4824],\\n [0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6431, 0.4392, 0.2510],\\n [0.6471, 0.4431, 0.2549],\\n [0.6549, 0.4510, 0.2627]],\\n\\n [[0.8627, 0.6745, 0.4863],\\n [0.8667, 0.6784, 0.4902],\\n [0.8784, 0.6902, 0.5020],\\n ...,\\n [0.6353, 0.4314, 0.2431],\\n [0.6431, 0.4392, 0.2510],\\n [0.6392, 0.4353, 0.2471]]]])'], 'multi_prompts': [\"[{'id': 0, 'positive_points': {'points': [[0.7518972528753959, 0.6355044797738758], [0.7340045522905485, 0.6593619024052091], [0.7021953068063758, 0.6623440802341257], [0.6902668397498108, 0.677254969378709], [0.668397983479442, 0.6742727915497924], [0.7180999295484621, 0.6176114128003758], [0.7180999295484621, 0.572878745366626], [0.7439449415043526, 0.5311282557617927], [0.7240641630767446, 0.5609500340509593], [0.6982191511208541, 0.5609500340509593]], 'labels': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.7141237738629407, 0.6056827014847093, 0.15109391604982114, 0.19085938105066613]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 1, 'positive_points': {'points': [[0.6513952517072837, 0.6001522443905642], [0.6354008929467748, 0.6921217188777309], [0.6433980723270292, 0.8680633222444846], [0.8859791801947458, 0.884058013459644], [0.9046392654153393, 0.6041509171943541], [0.9046392654153393, 0.5441708251375063], [0.8060073863922018, 0.5201787883147672]], 'labels': [1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [[0.7180384132094035, 0.5921548987829846], [0.7180384132094035, 0.5921548987829846], [0.7393642248900819, 0.6601323364474121], [0.7393642248900819, 0.6601323364474121], [0.7446956778102515, 0.6841243732701512], [0.7446956778102515, 0.6841243732701512], [0.670055336927877, 0.6721283548587816], [0.670055336927877, 0.6721283548587816], [0.6913811486085556, 0.608149589998144], [0.6913811486085556, 0.608149589998144], [0.6887154221484707, 0.552168170745086], [0.6887154221484707, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7100412338291491, 0.552168170745086], [0.7366984984299972, 0.552168170745086], [0.7366984984299972, 0.552168170745086]], 'labels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'positive_boxes': {'boxes': [[0.7713529424110994, 0.7141144192985751, 0.31455572229000606, 0.4198606443979348]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 2, 'positive_points': {'points': [[0.5279788816577594, 0.8586378093779201], [0.5097671062510242, 0.6517998210195123], [0.4733435554375539, 0.64789721746558], [0.37968299620291596, 0.64789721746558], [0.39529308940868896, 0.8313195845003946], [0.5565973858683432, 0.8586378093779201], [0.569605796873154, 0.6439946139116478]], 'labels': [1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [[0.4863519664423647, 0.7415597027599534], [0.4863519664423647, 0.7415597027599534], [0.4837502842414026, 0.8508326022700556], [0.4837502842414026, 0.8508326022700556], [0.4473267334279323, 0.8664430164857846], [0.4473267334279323, 0.8664430164857846], [0.43431832242312146, 0.628384199695919], [0.43431832242312146, 0.628384199695919], [0.5123687884519864, 0.5893581641565967], [0.5123687884519864, 0.5893581641565967], [0.5019620596481378, 0.6361894068037834], [0.5019620596481378, 0.6361894068037834], [0.4291149580211971, 0.6400920103577157], [0.4291149580211971, 0.6400920103577157]], 'labels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'positive_boxes': {'boxes': [[0.47724607873899716, 0.7591214187526485, 0.21593962267985972, 0.24586402389773]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 3, 'positive_points': {'points': [[0.43642532993691785, 0.595717523200948]], 'labels': [1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.4324084720788661, 0.6137937552745099, 0.06426972572882772, 0.07230492829424773]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 4, 'positive_points': {'points': [[0.5006950556657457, 0.595717523200948]], 'labels': [1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.5027034845947715, 0.5716158804361987, 0.09238773073518991, 0.1687114993532448]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 5, 'positive_points': {'points': [[0.9264819886192297, 0.384828149009392], [0.7939256793035224, 0.37880273831820466], [0.7939256793035224, 0.11368466790596292], [0.9304988464772813, 0.10765925721477561], [0.874262836464557, 0.22214206034733455], [0.8501616893162467, 0.22214206034733455], [0.846144831458195, 0.31854863140633155], [0.8983639836128675, 0.3004723993327696], [0.8943471257548158, 0.20406582827377262], [0.8943471257548158, 0.12573548928833755], [0.8421279736001431, 0.1558625427442741], [0.830077400025988, 0.28842157795039497], [0.8220436843098845, 0.33059945278870617]], 'labels': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.8662291207484536, 0.25829452449445844, 0.18477546147037982, 0.31332135594174026]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}, {'id': 6, 'positive_points': {'points': [[0.7045792285036274, 0.9568116711293354], [0.6789425589101554, 0.9568116711293354], [0.6569682706871793, 0.9348369322210276], [0.6716177961691634, 0.9293432474939506], [0.6569682706871793, 0.9403306169481045], [0.7082416098741234, 0.9403306169481045]], 'labels': [1, 1, 1, 1, 1, 1]}, 'negative_points': {'points': [], 'labels': []}, 'positive_boxes': {'boxes': [[0.6789425589101554, 0.943077459311643, 0.10254667837388842, 0.07141790145200044]], 'labels': [True]}, 'negative_boxes': {'boxes': [], 'labels': []}}]\"]}, 'current_outputs': ['20', '12', '23', '27', '1', '4', '22', '26', '3', '24'], 'timestamp': 1778659164071}\n Details: Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/scene_seg.json\nNode error: SAM3MultipromptSegmentation", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit", "cpu": "arm"}}, "scene_seg_interactive": {"src": "", "title": "scene_seg_interactive", "status": "fail", "duration": "6.67", "log": "Capturing execution frames: scene_seg_interactive.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadImage\n [ComfyUI] Inputs: {\"image\": \"image.png\"}\n [ComfyUI] Node 4: MaskPreview\n [ComfyUI] Inputs: {\"mask\": [\"26\", 0]}\n [ComfyUI] Node 12: LoadSAM3Model\n [ComfyUI] Inputs: {\"precision\": \"auto\", \"compile\": false}\n [ComfyUI] Node 26: SAM3InteractiveCollector\n [ComfyUI] Inputs: {\"multi_prompts_store\": \"[{\\\"positive_points\\\":[{\\\"x\\\":3348.288109906738,\\\"y\\\":2452.2208696844737}],\\\"negative_points\\\":[],\\\"positive_boxes\\\":[],\\\"negative_boxes\\\":[],\\\"name\\\":\\\"Prompt 1\\\"},{\\\"positiv\n [ComfyUI] Generated prompt_id: 5a36ca33-ca38-401c-9bbe-bfb4b45c3276\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] [comfy-env] Running LoadSAM3Model: precision: 'auto', compile: False\n [ComfyUI] [SubprocessWorker] call_method: nodes.load_model.LoadSAM3Model.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=9 sending call_method\n [ComfyUI] [SubprocessWorker] got response: ok\n [ComfyUI] [comfy-env] LoadSAM3Model done (0.00s): result: NodeOutput\n [ComfyUI] [comfy-env] Running SAM3InteractiveCollector: multi_prompts_store: '[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.220..., sam3_model_config: dict, image: torch.float32 [1,4480,6720,3] cpu, unique_id: '26'\n [ComfyUI] [SubprocessWorker] call_method: nodes.sam3_interactive.SAM3InteractiveCollector.EXECUTE_NORMALIZED\n [ComfyUI] [SubprocessWorker] acquired lock, ensuring started...\n [ComfyUI] [ComfyUI-SAM3] Health check: ping (timeout=5.0s)...\n [ComfyUI] [ComfyUI-SAM3] Health check: ok\n [ComfyUI] [SubprocessWorker] worker started/confirmed\n [ComfyUI] [comfy-env] PRE-SERIALIZE 'image' shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] serializing kwargs to shm...\n [ComfyUI] [SubprocessWorker] created 0 shm blocks\n [ComfyUI] [SubprocessWorker] sending request via socket...\n [ComfyUI] [SubprocessWorker] call_id=10 sending call_method\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] _from_shm got dict with keys: ['__type__', 'strategy', 'manager_path', 'storage_key', 'storage_size']\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZE TensorRef: tensor_size=[1, 4480, 6720, 3]\n [ComfyUI] [worker:ComfyUI-SAM3] [comfy-env] DESERIALIZED tensor shape: torch.Size([1, 4480, 6720, 3])\n [ComfyUI] [SubprocessWorker] got response: error\n [ComfyUI] !!! Exception during processing !!! No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_interactive.py\", line 667, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\n [ComfyUI] output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\n [ComfyUI] return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\n [ComfyUI] await process_inputs(input_dict, i)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\n [ComfyUI] result = f(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\n [ComfyUI] result = worker.call_method(\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\n [ComfyUI] raise WorkerError(\n [ComfyUI] comfy_env.isolation.workers.base.WorkerError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] Worker traceback:\n [ComfyUI] Traceback (most recent call last):\n [ComfyUI] File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\n [ComfyUI] result = method(**inputs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\n [ComfyUI] to_return = cls.execute(*args, **kwargs)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_interactive.py\", line 667, in execute\n [ComfyUI] sam3_model = get_or_build_model(sam3_model_config)\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\n [ComfyUI] from .sam3_model_patcher import SAM3UnifiedModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\n [ComfyUI] from comfy.model_patcher import ModelPatcher\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\n [ComfyUI] import comfy.hooks\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\n [ComfyUI] import comfy.lora\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\n [ComfyUI] import comfy.model_base\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\n [ComfyUI] import comfy.ldm.hidream_o1.model\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\n [ComfyUI] from comfy.text_encoders.qwen35 import Qwen35VisionModel\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\n [ComfyUI] from comfy import sd1_clip\n [ComfyUI] File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\n [ComfyUI] from transformers import CLIPTokenizer\n [ComfyUI] ModuleNotFoundError: No module named 'transformers'\n [ComfyUI] \n [ComfyUI] \n [ComfyUI] Prompt executed in 1.36 seconds\n Execution complete (t=1.6s)\n Execution error: {'prompt_id': '5fb95b77-15b7-4159-a594-df4101d423a4', 'node_id': '26', 'node_type': 'SAM3InteractiveCollector', 'executed': ['12', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_interactive.py\", line 667, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'multi_prompts_store': ['[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]'], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'auto', 'dtype': 'bf16', 'compile': False}\"], 'image': ['tensor([[[[0.9176, 0.8392, 0.7333],\\n [0.9294, 0.8471, 0.7412],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8039, 0.6588, 0.4863],\\n [0.8157, 0.6706, 0.4980]],\\n\\n [[0.9137, 0.8353, 0.7294],\\n [0.9216, 0.8392, 0.7333],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8039, 0.6588, 0.4863],\\n [0.8039, 0.6588, 0.4863],\\n [0.8118, 0.6667, 0.4941]],\\n\\n [[0.9137, 0.8314, 0.7255],\\n [0.9137, 0.8314, 0.7255],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8118, 0.6667, 0.4941],\\n [0.8039, 0.6588, 0.4863]],\\n\\n ...,\\n\\n [[0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6471, 0.4431, 0.2549],\\n [0.6392, 0.4353, 0.2471],\\n [0.6471, 0.4431, 0.2549]],\\n\\n [[0.8588, 0.6706, 0.4824],\\n [0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6431, 0.4392, 0.2510],\\n [0.6471, 0.4431, 0.2549],\\n [0.6549, 0.4510, 0.2627]],\\n\\n [[0.8627, 0.6745, 0.4863],\\n [0.8667, 0.6784, 0.4902],\\n [0.8784, 0.6902, 0.5020],\\n ...,\\n [0.6353, 0.4314, 0.2431],\\n [0.6431, 0.4392, 0.2510],\\n [0.6392, 0.4353, 0.2471]]]])'], 'unique_id': ['26'], 'prompt': ['{\\'1\\': {\\'inputs\\': {\\'image\\': \\'image.png\\'}, \\'class_type\\': \\'LoadImage\\', \\'_meta\\': {\\'title\\': \\'Load Image\\'}, \\'is_changed\\': [\\'72785412200dcb9f5c6bc4eaa3018172293f67836627708e6bce78150109af15\\']}, \\'4\\': {\\'inputs\\': {\\'mask\\': [\\'26\\', 0]}, \\'class_type\\': \\'MaskPreview\\', \\'_meta\\': {\\'title\\': \\'Preview Mask\\'}}, \\'12\\': {\\'inputs\\': {\\'precision\\': \\'auto\\', \\'compile\\': False}, \\'class_type\\': \\'LoadSAM3Model\\', \\'_meta\\': {\\'title\\': \\'(Down)Load SAM3 Model\\'}}, \\'26\\': {\\'inputs\\': {\\'multi_prompts_store\\': \\'[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]\\', \\'canvas\\': \\'\\', \\'sam3_model_config\\': [\\'12\\', 0], \\'image\\': [\\'1\\', 0]}, \\'class_type\\': \\'SAM3InteractiveCollector\\', \\'_meta\\': {\\'title\\': \\'SAM3 Interactive Collector\\'}}}'], 'extra_pnginfo': ['{\\'workflow\\': {\\'id\\': \\'9e5b67d0-53dc-42aa-bdb7-541f1939e114\\', \\'revision\\': 0, \\'last_node_id\\': 26, \\'last_link_id\\': 57, \\'nodes\\': [{\\'id\\': 12, \\'type\\': \\'LoadSAM3Model\\', \\'pos\\': [619.424717299163, 120.03196674570798], \\'size\\': [270, 134.65625], \\'flags\\': {}, \\'order\\': 0, \\'mode\\': 0, \\'inputs\\': [], \\'outputs\\': [{\\'name\\': \\'sam3_model_config\\', \\'type\\': \\'SAM3_MODEL_CONFIG\\', \\'links\\': [55]}], \\'properties\\': {\\'Node name for S&R\\': \\'LoadSAM3Model\\', \\'cnr_id\\': \\'comfyui-sam3\\', \\'ver\\': \\'82c8e4f88a6c0a9242712b827e05f5e67c4a90a7\\', \\'aux_id\\': \\'PozzettiAndrea/ComfyUI-SAM3\\'}, \\'widgets_values\\': [\\'auto\\', False]}, {\\'id\\': 1, \\'type\\': \\'LoadImage\\', \\'pos\\': [488.1468326416015, 306.42935311583375], \\'size\\': [274.078125, 340], \\'flags\\': {}, \\'order\\': 1, \\'mode\\': 0, \\'inputs\\': [], \\'outputs\\': [{\\'name\\': \\'IMAGE\\', \\'type\\': \\'IMAGE\\', \\'links\\': [56]}, {\\'name\\': \\'MASK\\', \\'type\\': \\'MASK\\', \\'links\\': None}], \\'properties\\': {\\'Node name for S&R\\': \\'LoadImage\\', \\'cnr_id\\': \\'comfy-core\\', \\'ver\\': \\'0.3.72\\'}, \\'widgets_values\\': [\\'image.png\\', \\'image\\']}, {\\'id\\': 26, \\'type\\': \\'SAM3InteractiveCollector\\', \\'pos\\': [1010.2283851719152, 178.893439578179], \\'size\\': [400, 569], \\'flags\\': {}, \\'order\\': 2, \\'mode\\': 0, \\'inputs\\': [{\\'name\\': \\'sam3_model_config\\', \\'type\\': \\'SAM3_MODEL_CONFIG\\', \\'link\\': 55}, {\\'name\\': \\'image\\', \\'type\\': \\'IMAGE\\', \\'link\\': 56}], \\'outputs\\': [{\\'name\\': \\'masks\\', \\'type\\': \\'MASK\\', \\'links\\': [57]}, {\\'name\\': \\'visualization\\', \\'type\\': \\'IMAGE\\', \\'links\\': None}, {\\'name\\': \\'multi_prompts\\', \\'type\\': \\'SAM3_MULTI_PROMPTS\\', \\'links\\': None}], \\'properties\\': {\\'Node name for S&R\\': \\'SAM3InteractiveCollector\\', \\'cnr_id\\': \\'comfyui-sam3\\', \\'ver\\': \\'c7636fa4a0b8c0fb07aa01f0c7749ebd5f9c92f3\\'}, \\'widgets_values\\': [\\'[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]\\', \\'\\']}, {\\'id\\': 4, \\'type\\': \\'MaskPreview\\', \\'pos\\': [1509.2821361303925, 266.63965000030805], \\'size\\': [225, 258], \\'flags\\': {}, \\'order\\': 3, \\'mode\\': 0, \\'inputs\\': [{\\'name\\': \\'mask\\', \\'type\\': \\'MASK\\', \\'link\\': 57}], \\'outputs\\': [], \\'properties\\': {\\'Node name for S&R\\': \\'MaskPreview\\', \\'cnr_id\\': \\'comfy-core\\', \\'ver\\': \\'0.3.72\\'}, \\'widgets_values\\': []}], \\'links\\': [[55, 12, 0, 26, 0, \\'SAM3_MODEL_CONFIG\\'], [56, 1, 0, 26, 1, \\'IMAGE\\'], [57, 26, 0, 4, 0, \\'MASK\\']], \\'groups\\': [], \\'config\\': {}, \\'extra\\': {\\'ds\\': {\\'scale\\': 1.2385275239783924, \\'offset\\': [-570.0951003265552, 14.632739985499132]}, \\'frontendVersion\\': \\'1.43.18\\', \\'workflowRendererVersion\\': \\'LG\\', \\'VHS_latentpreview\\': False, \\'VHS_latentpreviewrate\\': 0, \\'VHS_MetadataImage\\': True, \\'VHS_KeepIntermediate\\': True}, \\'version\\': 0.4}}']}, 'current_outputs': ['12', '4', '26', '1'], 'timestamp': 1778659171697}\n Status: FAILED\n Error: Workflow execution failed: {'prompt_id': '5fb95b77-15b7-4159-a594-df4101d423a4', 'node_id': '26', 'node_type': 'SAM3InteractiveCollector', 'executed': ['12', '1'], 'exception_message': 'No module named \\'transformers\\'\\n\\nWorker traceback:\\nTraceback (most recent call last):\\n File \"/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfyui_pvenv_2ezacctk/persistent_worker.py\", line 1762, in main\\n result = method(**inputs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy_api/latest/_io.py\", line 1833, in EXECUTE_NORMALIZED\\n to_return = cls.execute(*args, **kwargs)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_interactive.py\", line 667, in execute\\n sam3_model = get_or_build_model(sam3_model_config)\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/_model_cache.py\", line 31, in get_or_build_model\\n from .sam3_model_patcher import SAM3UnifiedModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3_model_patcher.py\", line 14, in <module>\\n from comfy.model_patcher import ModelPatcher\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_patcher.py\", line 32, in <module>\\n import comfy.hooks\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/hooks.py\", line 14, in <module>\\n import comfy.lora\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/lora.py\", line 23, in <module>\\n import comfy.model_base\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/model_base.py\", line 61, in <module>\\n import comfy.ldm.hidream_o1.model\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/ldm/hidream_o1/model.py\", line 20, in <module>\\n from comfy.text_encoders.qwen35 import Qwen35VisionModel\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/text_encoders/qwen35.py\", line 10, in <module>\\n from comfy import sd1_clip\\n File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/comfy/sd1_clip.py\", line 3, in <module>\\n from transformers import CLIPTokenizer\\nModuleNotFoundError: No module named \\'transformers\\'\\n\\n', 'exception_type': 'comfy_env.isolation.workers.base.WorkerError', 'traceback': [' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 535, in execute\\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 335, in get_output_data\\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 309, in _async_map_node_over_list\\n await process_inputs(input_dict, i)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/execution.py\", line 297, in process_inputs\\n result = f(**inputs)\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/metadata.py\", line 556, in proxy\\n result = worker.call_method(\\n', ' File \"/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/venv/lib/python3.10/site-packages/comfy_env/isolation/workers/subprocess.py\", line 674, in call_method\\n raise WorkerError(\\n'], 'current_inputs': {'multi_prompts_store': ['[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]'], 'sam3_model_config': [\"{'checkpoint_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/models/sam3/sam3.safetensors', 'bpe_path': '/Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/SAM3-0756/ComfyUI/custom_nodes/ComfyUI-SAM3/nodes/sam3/bpe_simple_vocab_16e6.txt.gz', 'precision': 'auto', 'dtype': 'bf16', 'compile': False}\"], 'image': ['tensor([[[[0.9176, 0.8392, 0.7333],\\n [0.9294, 0.8471, 0.7412],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8039, 0.6588, 0.4863],\\n [0.8157, 0.6706, 0.4980]],\\n\\n [[0.9137, 0.8353, 0.7294],\\n [0.9216, 0.8392, 0.7333],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8039, 0.6588, 0.4863],\\n [0.8039, 0.6588, 0.4863],\\n [0.8118, 0.6667, 0.4941]],\\n\\n [[0.9137, 0.8314, 0.7255],\\n [0.9137, 0.8314, 0.7255],\\n [0.9176, 0.8353, 0.7294],\\n ...,\\n [0.8078, 0.6627, 0.4902],\\n [0.8118, 0.6667, 0.4941],\\n [0.8039, 0.6588, 0.4863]],\\n\\n ...,\\n\\n [[0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6471, 0.4431, 0.2549],\\n [0.6392, 0.4353, 0.2471],\\n [0.6471, 0.4431, 0.2549]],\\n\\n [[0.8588, 0.6706, 0.4824],\\n [0.8667, 0.6784, 0.4902],\\n [0.8706, 0.6824, 0.4941],\\n ...,\\n [0.6431, 0.4392, 0.2510],\\n [0.6471, 0.4431, 0.2549],\\n [0.6549, 0.4510, 0.2627]],\\n\\n [[0.8627, 0.6745, 0.4863],\\n [0.8667, 0.6784, 0.4902],\\n [0.8784, 0.6902, 0.5020],\\n ...,\\n [0.6353, 0.4314, 0.2431],\\n [0.6431, 0.4392, 0.2510],\\n [0.6392, 0.4353, 0.2471]]]])'], 'unique_id': ['26'], 'prompt': ['{\\'1\\': {\\'inputs\\': {\\'image\\': \\'image.png\\'}, \\'class_type\\': \\'LoadImage\\', \\'_meta\\': {\\'title\\': \\'Load Image\\'}, \\'is_changed\\': [\\'72785412200dcb9f5c6bc4eaa3018172293f67836627708e6bce78150109af15\\']}, \\'4\\': {\\'inputs\\': {\\'mask\\': [\\'26\\', 0]}, \\'class_type\\': \\'MaskPreview\\', \\'_meta\\': {\\'title\\': \\'Preview Mask\\'}}, \\'12\\': {\\'inputs\\': {\\'precision\\': \\'auto\\', \\'compile\\': False}, \\'class_type\\': \\'LoadSAM3Model\\', \\'_meta\\': {\\'title\\': \\'(Down)Load SAM3 Model\\'}}, \\'26\\': {\\'inputs\\': {\\'multi_prompts_store\\': \\'[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]\\', \\'canvas\\': \\'\\', \\'sam3_model_config\\': [\\'12\\', 0], \\'image\\': [\\'1\\', 0]}, \\'class_type\\': \\'SAM3InteractiveCollector\\', \\'_meta\\': {\\'title\\': \\'SAM3 Interactive Collector\\'}}}'], 'extra_pnginfo': ['{\\'workflow\\': {\\'id\\': \\'9e5b67d0-53dc-42aa-bdb7-541f1939e114\\', \\'revision\\': 0, \\'last_node_id\\': 26, \\'last_link_id\\': 57, \\'nodes\\': [{\\'id\\': 12, \\'type\\': \\'LoadSAM3Model\\', \\'pos\\': [619.424717299163, 120.03196674570798], \\'size\\': [270, 134.65625], \\'flags\\': {}, \\'order\\': 0, \\'mode\\': 0, \\'inputs\\': [], \\'outputs\\': [{\\'name\\': \\'sam3_model_config\\', \\'type\\': \\'SAM3_MODEL_CONFIG\\', \\'links\\': [55]}], \\'properties\\': {\\'Node name for S&R\\': \\'LoadSAM3Model\\', \\'cnr_id\\': \\'comfyui-sam3\\', \\'ver\\': \\'82c8e4f88a6c0a9242712b827e05f5e67c4a90a7\\', \\'aux_id\\': \\'PozzettiAndrea/ComfyUI-SAM3\\'}, \\'widgets_values\\': [\\'auto\\', False]}, {\\'id\\': 1, \\'type\\': \\'LoadImage\\', \\'pos\\': [488.1468326416015, 306.42935311583375], \\'size\\': [274.078125, 340], \\'flags\\': {}, \\'order\\': 1, \\'mode\\': 0, \\'inputs\\': [], \\'outputs\\': [{\\'name\\': \\'IMAGE\\', \\'type\\': \\'IMAGE\\', \\'links\\': [56]}, {\\'name\\': \\'MASK\\', \\'type\\': \\'MASK\\', \\'links\\': None}], \\'properties\\': {\\'Node name for S&R\\': \\'LoadImage\\', \\'cnr_id\\': \\'comfy-core\\', \\'ver\\': \\'0.3.72\\'}, \\'widgets_values\\': [\\'image.png\\', \\'image\\']}, {\\'id\\': 26, \\'type\\': \\'SAM3InteractiveCollector\\', \\'pos\\': [1010.2283851719152, 178.893439578179], \\'size\\': [400, 569], \\'flags\\': {}, \\'order\\': 2, \\'mode\\': 0, \\'inputs\\': [{\\'name\\': \\'sam3_model_config\\', \\'type\\': \\'SAM3_MODEL_CONFIG\\', \\'link\\': 55}, {\\'name\\': \\'image\\', \\'type\\': \\'IMAGE\\', \\'link\\': 56}], \\'outputs\\': [{\\'name\\': \\'masks\\', \\'type\\': \\'MASK\\', \\'links\\': [57]}, {\\'name\\': \\'visualization\\', \\'type\\': \\'IMAGE\\', \\'links\\': None}, {\\'name\\': \\'multi_prompts\\', \\'type\\': \\'SAM3_MULTI_PROMPTS\\', \\'links\\': None}], \\'properties\\': {\\'Node name for S&R\\': \\'SAM3InteractiveCollector\\', \\'cnr_id\\': \\'comfyui-sam3\\', \\'ver\\': \\'c7636fa4a0b8c0fb07aa01f0c7749ebd5f9c92f3\\'}, \\'widgets_values\\': [\\'[{\"positive_points\":[{\"x\":3348.288109906738,\"y\":2452.2208696844737}],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 1\"},{\"positive_points\":[],\"negative_points\":[],\"positive_boxes\":[],\"negative_boxes\":[],\"name\":\"Prompt 2\"}]\\', \\'\\']}, {\\'id\\': 4, \\'type\\': \\'MaskPreview\\', \\'pos\\': [1509.2821361303925, 266.63965000030805], \\'size\\': [225, 258], \\'flags\\': {}, \\'order\\': 3, \\'mode\\': 0, \\'inputs\\': [{\\'name\\': \\'mask\\', \\'type\\': \\'MASK\\', \\'link\\': 57}], \\'outputs\\': [], \\'properties\\': {\\'Node name for S&R\\': \\'MaskPreview\\', \\'cnr_id\\': \\'comfy-core\\', \\'ver\\': \\'0.3.72\\'}, \\'widgets_values\\': []}], \\'links\\': [[55, 12, 0, 26, 0, \\'SAM3_MODEL_CONFIG\\'], [56, 1, 0, 26, 1, \\'IMAGE\\'], [57, 26, 0, 4, 0, \\'MASK\\']], \\'groups\\': [], \\'config\\': {}, \\'extra\\': {\\'ds\\': {\\'scale\\': 1.2385275239783924, \\'offset\\': [-570.0951003265552, 14.632739985499132]}, \\'frontendVersion\\': \\'1.43.18\\', \\'workflowRendererVersion\\': \\'LG\\', \\'VHS_latentpreview\\': False, \\'VHS_latentpreviewrate\\': 0, \\'VHS_MetadataImage\\': True, \\'VHS_KeepIntermediate\\': True}, \\'version\\': 0.4}}']}, 'current_outputs': ['12', '4', '26', '1'], 'timestamp': 1778659171697}\n Details: Workflow: /private/var/folders/tb/y368xp_x10s3ty1b_mtl5mxr0000gn/T/comfy-test-run-mric64us/ComfyUI-SAM3/workflows/scene_seg_interactive.json\nNode error: SAM3InteractiveCollector", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit", "cpu": "arm"}}};
const workflowNames = Object.keys(workflowData);
const videoData = {};
const inIframe = window !== window.top;
let currentWorkflow = null;
let playInterval = null;
let originalLogContent = '';
let currentFrameIndex = 0;
let currentFrames = [];
let currentTotalTime = 0;
function openLightboxByName(name) {
const w = workflowData[name];
if (w) openLightbox(w.src, w.title, w.status, w.duration, w.log, w.hardware);
}
function openLightbox(src, title, status, duration, logContent, hardware) {
document.getElementById('lightbox-img').src = src;
document.getElementById('lightbox-title').textContent = title;
currentWorkflow = title;
originalLogContent = logContent;
const badge = document.getElementById('lightbox-badge');
badge.textContent = status;
badge.className = 'lightbox-badge ' + status;
document.getElementById('lightbox-duration').textContent = duration + 's';
document.getElementById('lightbox-log').textContent = logContent || '(No log available)';
const hwEl = document.getElementById('lightbox-hardware');
if (hardware) {
const parts = [];
if (hardware.os) parts.push(hardware.os);
if (hardware.cpu) parts.push(hardware.cpu);
if (hardware.gpu) parts.push(hardware.gpu);
hwEl.textContent = parts.join(' | ');
} else {
hwEl.textContent = status === 'skipped' ? '(Did not run on this machine)' : '';
}
const data = videoData[title];
const videoPlayer = document.getElementById('video-player');
const lightboxImg = document.getElementById('lightbox-img');
const lightboxVideo = document.getElementById('lightbox-video');
// Reset both modes; the branch below activates one.
videoPlayer.classList.remove('active');
lightboxVideo.style.display = 'none';
lightboxVideo.removeAttribute('src');
lightboxImg.style.display = '';
if (data && data.mp4) {
// Playable mp4 (desktop runs). Show <video>, hide the
// frame-slideshow img + slider.
lightboxVideo.src = 'videos/' + encodeURIComponent(title) + '/' + data.mp4;
lightboxVideo.style.display = '';
lightboxImg.style.display = 'none';
} else if (data && data.frames && data.frames.length > 1) {
currentFrames = data.frames;
currentTotalTime = data.total_time || data.frames[data.frames.length - 1].time;
setupVideoSlider(data.frames, currentTotalTime);
updateVideoFrameByIndex(title, data.frames.length - 1);
videoPlayer.classList.add('active');
}
loadResourceGraph(title);
// Close image overlay if open
closeImgOverlay();
document.getElementById('lightbox').classList.add('active');
history.replaceState(null, '', '#' + encodeURIComponent(title));
// Notify parent frames for deep linking
if (inIframe) {
window.parent.postMessage({ type: 'comfytest-open', name: title }, '*');
}
}
function buildSliderRange(frames, totalTime) {
const range = { 'min': frames[0].time };
frames.forEach((frame, idx) => {
if (idx > 0 && idx < frames.length - 1) {
const pct = (frame.time / totalTime * 100).toFixed(1) + '%';
range[pct] = frame.time;
}
});
range['max'] = frames[frames.length - 1].time;
return range;
}
function setupVideoSlider(frames, totalTime) {
const sliderEl = document.getElementById('video-slider');
if (sliderEl.noUiSlider) {
sliderEl.noUiSlider.destroy();
}
const range = buildSliderRange(frames, totalTime);
noUiSlider.create(sliderEl, {
start: frames[frames.length - 1].time,
snap: true,
range: range,
pips: {
mode: 'range',
density: 100
}
});
sliderEl.noUiSlider.on('update', function(values) {
const time = parseFloat(values[0]);
const frameIdx = frames.findIndex(f => Math.abs(f.time - time) < 0.01);
if (frameIdx >= 0 && frameIdx !== currentFrameIndex) {
currentFrameIndex = frameIdx;
showFrame(currentWorkflow, frameIdx);
}
});
}
function showFrame(workflowName, frameIndex) {
const data = videoData[workflowName];
if (!data || !data.frames) return;
const frame = data.frames[frameIndex];
const img = document.getElementById('lightbox-img');
const isLastFrame = frameIndex === data.frames.length - 1;
if (isLastFrame && workflowData[workflowName] && workflowData[workflowName].src) {
img.src = workflowData[workflowName].src;
} else {
img.src = 'videos/' + workflowName + '/' + frame.file;
}
const counter = document.getElementById('video-frame-counter');
const totalTime = data.total_time || data.frames[data.frames.length - 1].time;
counter.textContent = frame.time.toFixed(1) + 's / ' + totalTime.toFixed(1) + 's';
const logEl = document.getElementById('lightbox-log');
if (frame.log) {
logEl.textContent = frame.log;
logEl.scrollTop = logEl.scrollHeight;
}
}
function updateVideoFrameByIndex(workflowName, frameIndex) {
currentFrameIndex = frameIndex;
showFrame(workflowName, frameIndex);
const sliderEl = document.getElementById('video-slider');
if (sliderEl.noUiSlider && currentFrames[frameIndex]) {
sliderEl.noUiSlider.set(currentFrames[frameIndex].time);
}
}
function toggleVideoPlay() {
const btn = document.getElementById('video-play-btn');
if (playInterval) {
clearInterval(playInterval);
playInterval = null;
btn.innerHTML = '&#9654; Play';
} else {
btn.innerHTML = '&#9632; Stop';
playInterval = setInterval(() => {
if (!currentFrames.length) return;
currentFrameIndex = (currentFrameIndex + 1) % currentFrames.length;
updateVideoFrameByIndex(currentWorkflow, currentFrameIndex);
}, 500);
}
}
let resourceGraphState = null;
async function loadResourceGraph(workflowName) {
const graphContainer = document.getElementById('resource-graph');
const canvas = document.getElementById('resource-canvas');
const gpuLegend = document.getElementById('gpu-legend');
resourceGraphState = null;
try {
const csvResponse = await fetch('logs/' + workflowName + '_resources.csv');
if (!csvResponse.ok) {
graphContainer.classList.remove('active');
return;
}
const text = await csvResponse.text();
const allLines = text.trim().split('\n');
let totalRamGb = 32;
if (allLines[0].startsWith('#')) {
const metaMatch = allLines[0].match(/total_ram_gb=([\d.]+)/);
if (metaMatch) {
totalRamGb = parseFloat(metaMatch[1]);
}
}
const dataLines = allLines.slice(2);
if (dataLines.length < 2) {
graphContainer.classList.remove('active');
return;
}
const data = dataLines.map(line => {
const [t, ram, vram] = line.split(',');
return {
t: parseFloat(t),
ram: parseFloat(ram),
vram: vram ? parseFloat(vram) : null
};
});
const hasVram = data.some(d => d.vram !== null);
gpuLegend.style.display = hasVram ? 'flex' : 'none';
graphContainer.classList.add('active');
await new Promise(r => setTimeout(r, 10));
const ctx = canvas.getContext('2d');
const dpr = window.devicePixelRatio || 1;
const rect = canvas.getBoundingClientRect();
canvas.width = rect.width * dpr;
canvas.height = rect.height * dpr;
ctx.scale(dpr, dpr);
const w = rect.width;
const h = rect.height;
const padding = { top: 10, right: 40, bottom: 20, left: 45 };
const graphW = w - padding.left - padding.right;
const graphH = h - padding.top - padding.bottom;
const maxRam = Math.max(...data.map(d => d.ram), 0.5);
const maxVram = hasVram ? Math.max(...data.filter(d => d.vram !== null).map(d => d.vram), 0.5) : 1;
const maxTime = data[data.length - 1].t;
resourceGraphState = { data, padding, w, h, graphW, graphH, maxRam, maxVram, maxTime, hasVram, dpr };
drawResourceGraph();
} catch (e) {
console.error('Resource graph error:', e);
graphContainer.classList.remove('active');
}
}
function drawResourceGraph(hoverX) {
if (!resourceGraphState) return;
const { data, padding, w, h, graphW, graphH, maxRam, maxVram, maxTime, hasVram, dpr } = resourceGraphState;
const canvas = document.getElementById('resource-canvas');
const ctx = canvas.getContext('2d');
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
ctx.clearRect(0, 0, w, h);
// Grid lines
ctx.strokeStyle = '#1c2d44';
ctx.lineWidth = 0.5;
for (let i = 1; i < 4; i++) {
const y = padding.top + (graphH * i / 4);
ctx.beginPath();
ctx.moveTo(padding.left, y);
ctx.lineTo(w - padding.right, y);
ctx.stroke();
}
// Axes
ctx.strokeStyle = '#243656';
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(padding.left, padding.top);
ctx.lineTo(padding.left, h - padding.bottom);
ctx.lineTo(w - padding.right, h - padding.bottom);
ctx.lineTo(w - padding.right, padding.top);
ctx.stroke();
// Left axis: RAM
ctx.fillStyle = '#3fb950';
ctx.font = '9px sans-serif';
ctx.textAlign = 'right';
const ramMax = Math.ceil(maxRam * 10) / 10;
ctx.fillText(ramMax.toFixed(1) + ' GB', padding.left - 3, padding.top + 4);
ctx.fillText('0', padding.left - 3, h - padding.bottom + 4);
// Right axis: VRAM (if present)
if (hasVram) {
ctx.fillStyle = '#d29922';
ctx.textAlign = 'left';
const vramMax = Math.ceil(maxVram * 10) / 10;
ctx.fillText(vramMax.toFixed(1) + ' GB', w - padding.right + 3, padding.top + 4);
ctx.fillText('0', w - padding.right + 3, h - padding.bottom + 4);
}
// Time labels
ctx.fillStyle = '#4a6282';
ctx.textAlign = 'center';
ctx.fillText('0s', padding.left, h - padding.bottom + 12);
ctx.fillText(maxTime.toFixed(0) + 's', w - padding.right, h - padding.bottom + 12);
function drawLine(values, maxVal, color) {
if (values.every(v => v === null || isNaN(v))) return;
ctx.strokeStyle = color;
ctx.lineWidth = 1.5;
ctx.beginPath();
let started = false;
data.forEach((d, i) => {
const val = values[i];
if (val === null || isNaN(val)) return;
const x = padding.left + (d.t / maxTime) * graphW;
const y = padding.top + (1 - val / maxVal) * graphH;
if (!started) { ctx.moveTo(x, y); started = true; }
else { ctx.lineTo(x, y); }
});
ctx.stroke();
}
drawLine(data.map(d => d.ram), ramMax, '#3fb950');
if (hasVram) {
drawLine(data.map(d => d.vram), Math.ceil(maxVram * 10) / 10, '#d29922');
}
// Hover crosshair
if (hoverX !== undefined && hoverX >= padding.left && hoverX <= w - padding.right) {
const timeAtCursor = ((hoverX - padding.left) / graphW) * maxTime;
let closest = data[0], closestDist = Infinity;
for (const d of data) {
const dist = Math.abs(d.t - timeAtCursor);
if (dist < closestDist) { closestDist = dist; closest = d; }
}
const snapX = padding.left + (closest.t / maxTime) * graphW;
// Vertical line
ctx.strokeStyle = 'rgba(230,237,243,0.2)';
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(snapX, padding.top);
ctx.lineTo(snapX, h - padding.bottom);
ctx.stroke();
// Readout
ctx.font = '10px sans-serif';
ctx.textAlign = 'left';
const readoutX = snapX + 6;
let readoutY = padding.top + 14;
ctx.fillStyle = '#8ba3c1';
ctx.fillText(closest.t.toFixed(1) + 's', readoutX, readoutY);
readoutY += 13;
ctx.fillStyle = '#3fb950';
ctx.fillText('RAM: ' + closest.ram.toFixed(2) + ' GB', readoutX, readoutY);
readoutY += 13;
if (hasVram && closest.vram !== null) {
ctx.fillStyle = '#d29922';
ctx.fillText('VRAM: ' + closest.vram.toFixed(2) + ' GB', readoutX, readoutY);
}
}
}
// Canvas hover handler
document.getElementById('resource-canvas').addEventListener('mousemove', function(e) {
if (!resourceGraphState) return;
const rect = this.getBoundingClientRect();
drawResourceGraph(e.clientX - rect.left);
});
document.getElementById('resource-canvas').addEventListener('mouseleave', function() {
drawResourceGraph();
});
function closeImgOverlay() {
const overlay = document.getElementById('img-overlay');
overlay.classList.remove('active', 'zoomed');
}
function closeLightbox() {
if (playInterval) {
clearInterval(playInterval);
playInterval = null;
document.getElementById('video-play-btn').innerHTML = '&#9654; Play';
}
closeImgOverlay();
document.getElementById('resource-graph').classList.remove('active');
document.getElementById('lightbox').classList.remove('active');
history.replaceState(null, '', window.location.pathname);
if (inIframe) {
window.parent.postMessage({ type: 'comfytest-close' }, '*');
}
}
document.getElementById('lightbox').onclick = (e) => {
if (e.target.id === 'lightbox') closeLightbox();
};
function navigateLightbox(delta) {
if (workflowNames.length === 0) return;
const idx = workflowNames.indexOf(currentWorkflow);
if (idx === -1) return;
const newIdx = (idx + delta + workflowNames.length) % workflowNames.length;
openLightboxByName(workflowNames[newIdx]);
}
function handleKey(key) {
const overlay = document.getElementById('img-overlay');
if (key === 'Escape') {
if (overlay.classList.contains('active')) {
closeImgOverlay();
} else {
closeLightbox();
}
return;
}
if (document.getElementById('lightbox').classList.contains('active') && !overlay.classList.contains('active')) {
if (key === 'ArrowLeft') { navigateLightbox(-1); }
if (key === 'ArrowRight') { navigateLightbox(1); }
if ((key === 'ArrowUp' || key === 'ArrowDown') && inIframe) {
window.parent.postMessage({
type: 'comfytest-platform-shift',
delta: key === 'ArrowUp' ? -1 : 1,
workflow: currentWorkflow,
}, '*');
}
}
}
document.onkeydown = (e) => {
if (['Escape', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {
e.preventDefault();
handleKey(e.key);
}
};
// Click lightbox image -> open in fullscreen overlay (fit mode)
document.getElementById('lightbox-img').addEventListener('click', function(e) {
e.stopPropagation();
const overlay = document.getElementById('img-overlay');
const overlayImg = document.getElementById('img-overlay-content');
overlayImg.src = this.src;
overlay.classList.add('active');
overlay.classList.remove('zoomed');
});
// Click overlay image: fit -> zoomed -> close
document.getElementById('img-overlay-content').addEventListener('click', function(e) {
e.stopPropagation();
const overlay = document.getElementById('img-overlay');
if (overlay.classList.contains('zoomed')) {
closeImgOverlay();
} else {
overlay.classList.add('zoomed');
}
});
// Click overlay background -> close overlay
document.getElementById('img-overlay').addEventListener('click', function(e) {
if (e.target === this) closeImgOverlay();
});
function openFromHash() {
const hash = decodeURIComponent(window.location.hash.slice(1));
if (hash && workflowData[hash]) {
const w = workflowData[hash];
openLightbox(w.src, w.title, w.status, w.duration, w.log, w.hardware);
}
}
window.addEventListener('hashchange', openFromHash);
window.addEventListener('load', openFromHash);
// Listen for messages from parent frames
window.addEventListener('message', function(e) {
if (!e.data || !e.data.type) return;
if (e.data.type === 'comfytest-open' && e.data.name) {
openLightboxByName(e.data.name);
}
if (e.data.type === 'comfytest-key') {
handleKey(e.data.key);
}
});
// Detect iframe: hide header and move meta chips into summary
if (inIframe) {
document.body.classList.add('in-iframe');
const chips = document.querySelector('.meta-chips');
const summary = document.querySelector('.summary');
if (chips && summary) {
const wrapper = document.createElement('div');
wrapper.className = 'summary-meta';
while (chips.firstChild) wrapper.appendChild(chips.firstChild);
summary.insertBefore(wrapper, summary.firstChild);
}
}
</script>
</body>
</html>