Add a VGGT(Visual Geometry Grounded Transformer) model compatible with huggingface transfromers #4323
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PR slow CI | |
on: | |
pull_request_target: | |
types: [opened, synchronize, reopened] | |
jobs: | |
get-pr-number: | |
name: Get PR number | |
uses: ./.github/workflows/get-pr-number.yml | |
get-pr-info: | |
name: Get PR commit SHA | |
needs: get-pr-number | |
if: ${{ needs.get-pr-number.outputs.PR_NUMBER != ''}} | |
uses: ./.github/workflows/get-pr-info.yml | |
with: | |
pr_number: ${{ needs.get-pr-number.outputs.PR_NUMBER }} | |
get-jobs: | |
name: Get test files to run | |
runs-on: ubuntu-22.04 | |
needs: [get-pr-number, get-pr-info] | |
outputs: | |
jobs: ${{ steps.get_jobs.outputs.jobs_to_run }} | |
steps: | |
- name: Get repository content | |
id: repo_content | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { data: tests_dir } = await github.rest.repos.getContent({ | |
owner: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_OWNER }}', | |
repo: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_NAME }}', | |
path: 'tests', | |
ref: '${{ needs.get-pr-info.outputs.PR_HEAD_SHA }}', | |
}); | |
const { data: tests_models_dir } = await github.rest.repos.getContent({ | |
owner: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_OWNER }}', | |
repo: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_NAME }}', | |
path: 'tests/models', | |
ref: '${{ needs.get-pr-info.outputs.PR_HEAD_SHA }}', | |
}); | |
const { data: tests_quantization_dir } = await github.rest.repos.getContent({ | |
owner: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_OWNER }}', | |
repo: '${{ needs.get-pr-info.outputs.PR_HEAD_REPO_NAME }}', | |
path: 'tests/quantization', | |
ref: '${{ needs.get-pr-info.outputs.PR_HEAD_SHA }}', | |
}); | |
core.setOutput('tests_dir', tests_dir); | |
core.setOutput('tests_models_dir', tests_models_dir); | |
core.setOutput('tests_quantization_dir', tests_quantization_dir); | |
# This checkout to the main branch | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: "0" | |
- name: Write pr_files file | |
run: | | |
cat > pr_files.txt << 'EOF' | |
${{ needs.get-pr-info.outputs.PR_FILES }} | |
EOF | |
- name: Write tests_dir file | |
run: | | |
cat > tests_dir.txt << 'EOF' | |
${{ steps.repo_content.outputs.tests_dir }} | |
EOF | |
- name: Write tests_models_dir file | |
run: | | |
cat > tests_models_dir.txt << 'EOF' | |
${{ steps.repo_content.outputs.tests_models_dir }} | |
EOF | |
- name: Write tests_quantization_dir file | |
run: | | |
cat > tests_quantization_dir.txt << 'EOF' | |
${{ steps.repo_content.outputs.tests_quantization_dir }} | |
EOF | |
- name: Run script to get jobs to run | |
id: get_jobs | |
run: | | |
python utils/get_pr_run_slow_jobs.py | tee output.txt | |
echo "jobs_to_run: $(tail -n 1 output.txt)" | |
echo "jobs_to_run=$(tail -n 1 output.txt)" >> $GITHUB_OUTPUT | |
send_comment: | |
# Will delete the previous comment and send a new one if: | |
# - either the content is changed | |
# - or the previous comment is 30 minutes or more old | |
name: Send a comment to suggest jobs to run | |
if: ${{ needs.get-jobs.outputs.jobs != '' }} | |
needs: [get-pr-number, get-jobs] | |
permissions: | |
pull-requests: write | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check and update comment if needed | |
uses: actions/github-script@v7 | |
env: | |
BODY: "\n\nrun-slow: ${{ needs.get-jobs.outputs.jobs }}" | |
with: | |
script: | | |
const prNumber = ${{ needs.get-pr-number.outputs.PR_NUMBER }}; | |
const commentPrefix = "**[For maintainers]** Suggested jobs to run (before merge)"; | |
const thirtyMinutesAgo = new Date(Date.now() - 30 * 60 * 1000); // 30 minutes ago | |
const newBody = `${commentPrefix}${process.env.BODY}`; | |
// Get all comments on the PR | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: prNumber | |
}); | |
// Find existing comments that start with our prefix | |
const existingComments = comments.filter(comment => | |
comment.user.login === 'github-actions[bot]' && | |
comment.body.startsWith(commentPrefix) | |
); | |
let shouldCreateNewComment = true; | |
let commentsToDelete = []; | |
if (existingComments.length > 0) { | |
// Get the most recent comment | |
const mostRecentComment = existingComments | |
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))[0]; | |
const commentDate = new Date(mostRecentComment.created_at); | |
const isOld = commentDate < thirtyMinutesAgo; | |
const isDifferentContent = mostRecentComment.body !== newBody; | |
console.log(`Most recent comment created: ${mostRecentComment.created_at}`); | |
console.log(`Is older than 30 minutes: ${isOld}`); | |
console.log(`Has different content: ${isDifferentContent}`); | |
if (isOld || isDifferentContent) { | |
// Delete all existing comments and create new one | |
commentsToDelete = existingComments; | |
console.log(`Will delete ${commentsToDelete.length} existing comment(s) and create new one`); | |
} else { | |
// Content is same and comment is recent, skip | |
shouldCreateNewComment = false; | |
console.log('Comment is recent and content unchanged, skipping update'); | |
} | |
} else { | |
console.log('No existing comments found, will create new one'); | |
} | |
// Delete old comments if needed | |
for (const comment of commentsToDelete) { | |
console.log(`Deleting comment #${comment.id} (created: ${comment.created_at})`); | |
await github.rest.issues.deleteComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
comment_id: comment.id | |
}); | |
} | |
// Create new comment if needed | |
if (shouldCreateNewComment) { | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: prNumber, | |
body: newBody | |
}); | |
console.log('✅ New comment created'); | |
} else { | |
console.log('ℹ️ No comment update needed'); | |
} |