Spaces:
Running
Running
Marc Allen Lopez
commited on
Commit
·
aeb43aa
1
Parent(s):
518eafc
Fix cache permissions: use /tmp/hf with proper Dockerfile
Browse files- Dockerfile +17 -2
- app.py +11 -2
Dockerfile
CHANGED
|
@@ -1,11 +1,26 @@
|
|
| 1 |
FROM pytorch/pytorch:2.1.2-cuda11.8-cudnn8-runtime
|
|
|
|
| 2 |
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
RUN pip install --no-cache-dir --upgrade pip
|
| 4 |
COPY requirements.txt /app/requirements.txt
|
| 5 |
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
|
|
|
| 6 |
COPY app.py /app/app.py
|
|
|
|
|
|
|
| 7 |
ENV PORT=7860
|
| 8 |
EXPOSE 7860
|
| 9 |
-
|
| 10 |
-
|
| 11 |
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
|
|
|
| 1 |
FROM pytorch/pytorch:2.1.2-cuda11.8-cudnn8-runtime
|
| 2 |
+
|
| 3 |
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
# Create cache directory with proper permissions
|
| 6 |
+
RUN mkdir -p /tmp/hf && chmod 777 /tmp/hf
|
| 7 |
+
|
| 8 |
+
# Set environment variables for model caching
|
| 9 |
+
ENV HF_HOME=/tmp/hf
|
| 10 |
+
ENV TRANSFORMERS_CACHE=/tmp/hf
|
| 11 |
+
ENV HUGGINGFACE_HUB_CACHE=/tmp/hf
|
| 12 |
+
|
| 13 |
+
# Install Python dependencies
|
| 14 |
RUN pip install --no-cache-dir --upgrade pip
|
| 15 |
COPY requirements.txt /app/requirements.txt
|
| 16 |
RUN pip install --no-cache-dir -r requirements.txt
|
| 17 |
+
|
| 18 |
+
# Copy application code
|
| 19 |
COPY app.py /app/app.py
|
| 20 |
+
|
| 21 |
+
# Expose port
|
| 22 |
ENV PORT=7860
|
| 23 |
EXPOSE 7860
|
| 24 |
+
|
| 25 |
+
# Run the application
|
| 26 |
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
app.py
CHANGED
|
@@ -14,6 +14,15 @@ DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
| 14 |
DEFAULT_MAX_LEN = int(os.getenv("MAX_LEN", "256"))
|
| 15 |
DEFAULT_BATCH_SIZE = int(os.getenv("BATCH_SIZE", "16"))
|
| 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
class DesklibAIDetectionModel(PreTrainedModel):
|
| 19 |
config_class = AutoConfig
|
|
@@ -36,8 +45,8 @@ class DesklibAIDetectionModel(PreTrainedModel):
|
|
| 36 |
|
| 37 |
|
| 38 |
def load_model():
|
| 39 |
-
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
|
| 40 |
-
model = DesklibAIDetectionModel.from_pretrained(MODEL_ID)
|
| 41 |
model.to(DEVICE)
|
| 42 |
model.eval()
|
| 43 |
|
|
|
|
| 14 |
DEFAULT_MAX_LEN = int(os.getenv("MAX_LEN", "256"))
|
| 15 |
DEFAULT_BATCH_SIZE = int(os.getenv("BATCH_SIZE", "16"))
|
| 16 |
|
| 17 |
+
# Use /tmp for model cache (always writable in containers)
|
| 18 |
+
HF_CACHE_DIR = "/tmp/hf"
|
| 19 |
+
os.makedirs(HF_CACHE_DIR, exist_ok=True)
|
| 20 |
+
|
| 21 |
+
# Also set env vars commonly used by transformers and huggingface_hub
|
| 22 |
+
os.environ.setdefault("HF_HOME", HF_CACHE_DIR)
|
| 23 |
+
os.environ.setdefault("TRANSFORMERS_CACHE", HF_CACHE_DIR)
|
| 24 |
+
os.environ.setdefault("HUGGINGFACE_HUB_CACHE", HF_CACHE_DIR)
|
| 25 |
+
|
| 26 |
|
| 27 |
class DesklibAIDetectionModel(PreTrainedModel):
|
| 28 |
config_class = AutoConfig
|
|
|
|
| 45 |
|
| 46 |
|
| 47 |
def load_model():
|
| 48 |
+
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, cache_dir=HF_CACHE_DIR)
|
| 49 |
+
model = DesklibAIDetectionModel.from_pretrained(MODEL_ID, cache_dir=HF_CACHE_DIR)
|
| 50 |
model.to(DEVICE)
|
| 51 |
model.eval()
|
| 52 |
|