Spaces:
Sleeping
Sleeping
ming
commited on
Commit
·
dd29a6d
1
Parent(s):
a36f560
Fix bitsandbytes UID error with getpass patch
Browse files- Added getpass.getuser() mock in structured_summarizer.py
- Mock catches KeyError and returns USER env var or 'user'
- Added HOME=/tmp and USER=user to Dockerfile
- Fixes 'getpwuid(): uid not found: 1000' error in HF Spaces
- Allows bitsandbytes 4-bit NF4 quantization to initialize
- Dockerfile +2 -0
- app/services/structured_summarizer.py +17 -0
Dockerfile
CHANGED
|
@@ -5,6 +5,8 @@ FROM python:3.9-slim
|
|
| 5 |
ENV PYTHONDONTWRITEBYTECODE=1 \
|
| 6 |
PYTHONUNBUFFERED=1 \
|
| 7 |
PYTHONPATH=/app \
|
|
|
|
|
|
|
| 8 |
ENABLE_V1_WARMUP=false \
|
| 9 |
ENABLE_V2_WARMUP=false \
|
| 10 |
ENABLE_V4_WARMUP=true \
|
|
|
|
| 5 |
ENV PYTHONDONTWRITEBYTECODE=1 \
|
| 6 |
PYTHONUNBUFFERED=1 \
|
| 7 |
PYTHONPATH=/app \
|
| 8 |
+
HOME=/tmp \
|
| 9 |
+
USER=user \
|
| 10 |
ENABLE_V1_WARMUP=false \
|
| 11 |
ENABLE_V2_WARMUP=false \
|
| 12 |
ENABLE_V4_WARMUP=true \
|
app/services/structured_summarizer.py
CHANGED
|
@@ -13,6 +13,23 @@ from app.core.logging import get_logger
|
|
| 13 |
|
| 14 |
logger = get_logger(__name__)
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
# Try to import transformers
|
| 17 |
try:
|
| 18 |
import torch
|
|
|
|
| 13 |
|
| 14 |
logger = get_logger(__name__)
|
| 15 |
|
| 16 |
+
# CRITICAL: Patch getpass.getuser() before importing bitsandbytes or transformers
|
| 17 |
+
# HF Spaces containers don't have UID 1000 in /etc/passwd, causing KeyError
|
| 18 |
+
import getpass
|
| 19 |
+
import os
|
| 20 |
+
|
| 21 |
+
_original_getuser = getpass.getuser
|
| 22 |
+
|
| 23 |
+
def _mock_getuser():
|
| 24 |
+
"""Mock getuser for HF Spaces compatibility."""
|
| 25 |
+
try:
|
| 26 |
+
return _original_getuser()
|
| 27 |
+
except KeyError:
|
| 28 |
+
# Fallback for containerized environments without proper user database
|
| 29 |
+
return os.environ.get("USER", os.environ.get("USERNAME", "user"))
|
| 30 |
+
|
| 31 |
+
getpass.getuser = _mock_getuser
|
| 32 |
+
|
| 33 |
# Try to import transformers
|
| 34 |
try:
|
| 35 |
import torch
|