deddoggo commited on
Commit
79d0162
·
1 Parent(s): 4b0b556
Files changed (2) hide show
  1. Dockerfile +35 -19
  2. environment.yml +23 -18
Dockerfile CHANGED
@@ -1,37 +1,53 @@
1
  # Dockerfile
2
 
3
  # Bước 1: Chọn base image
 
4
  FROM continuumio/miniconda3:latest
 
 
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
- # Bước 2: Thiết lập thư mục làm việc
8
  WORKDIR /app
9
 
10
  # Bước 3: Sao chép file định nghĩa môi trường Conda
 
11
  COPY environment.yml .
12
 
13
- # Cài đặt mamba vào môi trường base của Conda từ conda-forge
14
- RUN conda install -n base -c conda-forge mamba -y
15
-
16
- # Bước 4: Tạo môi trường Conda bằng mamba
17
- RUN mamba env create -f environment.yml && \
18
- conda clean -afy
19
 
20
- # Bước 5: Kích hoạt môi trường Conda
21
- SHELL ["conda", "run", "-n", "myapp-env", "/bin/bash", "-c"] # Replace myapp-env if your env name is different
 
 
 
 
 
22
 
23
- # ... (Rest of your Dockerfile: pip install torch, verification steps, etc.) ...
24
- # Ensure your PyTorch pip install (Step 6) still targets the same CUDA version
25
- # (e.g., cu118 if your environment.yml has cudatoolkit=11.8.0)
26
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- # Bước 7: Xác thực cài đặt (RẤT QUAN TRỌNG)
29
- # Output ở đây sẽ cho bạn biết PyTorch có nhận CUDA 11.8 không.
30
  RUN echo "--- KIỂM TRA MÔI TRƯỜNG SAU KHI CÀI ĐẶT ---" && \
31
  echo "Kiến trúc hệ thống:" && uname -m && \
32
  echo "Đường dẫn Conda:" && which conda && \
33
  echo "Đường dẫn Python:" && which python && \
34
  echo "Phiên bản Python:" && python --version && \
 
35
  echo "--- Thông tin PyTorch: ---" && \
36
  python -c "import torch; print(f'PyTorch version: {torch.__version__}'); print(f'CUDA available for PyTorch: {torch.cuda.is_available()}'); print(f'PyTorch built with CUDA version: {torch.version.cuda if torch.cuda.is_available() else \"N/A\"}'); print(f'cuDNN version: {torch.backends.cudnn.version() if torch.cuda.is_available() and torch.backends.cudnn.is_available() else \"N/A\"}'); print(f'Number of GPUs available to PyTorch: {torch.cuda.device_count()}')" && \
37
  echo "--- Thông tin Faiss: ---" && \
@@ -43,15 +59,15 @@ RUN echo "--- KIỂM TRA MÔI TRƯỜNG SAU KHI CÀI ĐẶT ---" && \
43
  # Bước 8: Sao chép toàn bộ code ứng dụng của bạn (app.py, retrieval.py, v.v.)
44
  # và các thư mục con (data/, models/ - nếu bạn tải model lên trực tiếp)
45
  # vào thư mục /app bên trong container.
46
- # Hãy tạo file .dockerignore để loại bỏ các file không cần thiết (ví dụ: .git, __pycache__, .venv)
47
  COPY . .
48
 
49
  # Bước 9: (Tùy chọn) Thiết lập các biến môi trường mà ứng dụng của bạn có thể cần
50
  # Ví dụ:
51
- # ENV MY_VARIABLE="my_value"
52
- # ENV GRADIO_SERVER_NAME="0.0.0.0" # Thường Gradio tự xử lý
53
- # ENV GRADIO_SERVER_PORT="7860" # Thường Gradio tự xử lý
54
 
55
  # Bước 10: Thiết lập lệnh mặc định để chạy ứng dụng của bạn
56
- # Điều này giả định rằng app.py của bạn khởi chạy server Gradio.
57
  CMD ["conda", "run", "-n", "myapp-env", "python", "app.py"]
 
1
  # Dockerfile
2
 
3
  # Bước 1: Chọn base image
4
+ # Sử dụng Miniconda làm base. Image này đã bao gồm Conda.
5
  FROM continuumio/miniconda3:latest
6
+
7
+ # Thiết lập biến môi trường để tránh các prompt tương tác không cần thiết
8
  ENV DEBIAN_FRONTEND=noninteractive
9
 
10
+ # Bước 2: Thiết lập thư mục làm việc bên trong container
11
  WORKDIR /app
12
 
13
  # Bước 3: Sao chép file định nghĩa môi trường Conda
14
+ # File environment.yml này nên được đặt cùng cấp với Dockerfile trong repo của bạn.
15
  COPY environment.yml .
16
 
17
+ # (Tùy chọn, thể bỏ qua nếu không cần thiết hoặc gây chậm)
18
+ # Cập nhật conda lên phiên bản mới nhất trong môi trường base
19
+ # RUN conda update -n base -c defaults conda -y
 
 
 
20
 
21
+ # Bước 4: Tạo môi trường Conda từ file environment.yml
22
+ # Tên môi trường "myapp-env" được lấy từ file environment.yml
23
+ # Lệnh `conda clean -afy` sẽ dọn dẹp cache sau khi tạo môi trường để giảm kích thước image.
24
+ RUN echo "Bắt đầu tạo môi trường Conda từ environment.yml..." && \
25
+ conda env create -f environment.yml && \
26
+ conda clean -afy && \
27
+ echo "Hoàn tất tạo môi trường Conda."
28
 
29
+ # Bước 5: Kích hoạt môi trường Conda cho tất cả các lệnh RUN, CMD, ENTRYPOINT tiếp theo
30
+ # Tên môi trường "myapp-env" phải khớp với tên trong environment.yml
31
+ SHELL ["conda", "run", "-n", "myapp-env", "/bin/bash", "-c"]
32
 
33
+ # Bước 6: Cài đặt/nâng cấp PyTorch, torchvision, torchaudio với GPU (nhắm đến CUDA 11.8)
34
+ # QUAN TRỌNG: HÃY KIỂM TRA VÀ SỬ DỤNG PHIÊN BẢN torch, torchvision, torchaudio
35
+ # THỰC TẾ CÓ SẴN cho cu118 và Python 3.11 (cp311) TẠI https://download.pytorch.org/whl/cu118
36
+ # Ví dụ dưới đây sử dụng torch 2.3.1, torchvision 0.18.1, torchaudio 2.3.1.
37
+ # THAY THẾ NẾU BẠN TÌM THẤY PHIÊN BẢN PHÙ HỢP HƠN HOẶC MỚI HƠN.
38
+ RUN echo "Bắt đầu cài đặt/nâng cấp PyTorch, torchvision, torchaudio với GPU (CUDA 11.8)..." && \
39
+ pip install --no-cache-dir --upgrade \
40
+ torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 \
41
+ --extra-index-url https://download.pytorch.org/whl/cu118 && \
42
+ echo "Đã cài đặt/nâng cấp PyTorch, torchvision, torchaudio cho cu118."
43
 
44
+ # Bước 7: Bước xác thực cài đặt (RẤT QUAN TRỌNG để gỡ lỗi trên Spaces)
 
45
  RUN echo "--- KIỂM TRA MÔI TRƯỜNG SAU KHI CÀI ĐẶT ---" && \
46
  echo "Kiến trúc hệ thống:" && uname -m && \
47
  echo "Đường dẫn Conda:" && which conda && \
48
  echo "Đường dẫn Python:" && which python && \
49
  echo "Phiên bản Python:" && python --version && \
50
+ echo "NVIDIA SMI (nếu có và cudatoolkit được cài đúng):" && nvidia-smi || echo "nvidia-smi không khả dụng hoặc có lỗi." && \
51
  echo "--- Thông tin PyTorch: ---" && \
52
  python -c "import torch; print(f'PyTorch version: {torch.__version__}'); print(f'CUDA available for PyTorch: {torch.cuda.is_available()}'); print(f'PyTorch built with CUDA version: {torch.version.cuda if torch.cuda.is_available() else \"N/A\"}'); print(f'cuDNN version: {torch.backends.cudnn.version() if torch.cuda.is_available() and torch.backends.cudnn.is_available() else \"N/A\"}'); print(f'Number of GPUs available to PyTorch: {torch.cuda.device_count()}')" && \
53
  echo "--- Thông tin Faiss: ---" && \
 
59
  # Bước 8: Sao chép toàn bộ code ứng dụng của bạn (app.py, retrieval.py, v.v.)
60
  # và các thư mục con (data/, models/ - nếu bạn tải model lên trực tiếp)
61
  # vào thư mục /app bên trong container.
62
+ # Hãy tạo file .dockerignore để loại bỏ các file không cần thiết.
63
  COPY . .
64
 
65
  # Bước 9: (Tùy chọn) Thiết lập các biến môi trường mà ứng dụng của bạn có thể cần
66
  # Ví dụ:
67
+ # ENV HF_HOME="/app/huggingface_cache" # Để cache model của Hugging Face vào một thư mục cụ thể
68
+ # ENV GRADIO_SERVER_NAME="0.0.0.0"
69
+ # ENV GRADIO_SERVER_PORT="7860"
70
 
71
  # Bước 10: Thiết lập lệnh mặc định để chạy ứng dụng của bạn
72
+ # Sử dụng "conda run" để đảm bảo ứng dụng chạy trong môi trường Conda đã được kích hoạt.
73
  CMD ["conda", "run", "-n", "myapp-env", "python", "app.py"]
environment.yml CHANGED
@@ -1,26 +1,31 @@
1
  # environment.yml
2
- name: myapp-env
3
  channels:
4
- - nvidia
5
- - pytorch
6
- - conda-forge
7
  - defaults
8
  dependencies:
9
- - python=3.11.12
10
- - nvidia::cudatoolkit=11.8.0 # Pin specific cudatoolkit
11
- # Find a specific faiss-gpu version for py311 & cuda11.8
12
- # e.g., pytorch::faiss-gpu=1.8.0 (verify availability)
13
- - pytorch::faiss-gpu # Or a more specific version like =1.8.0
14
- - numpy=1.26.4 # Pin NumPy for faiss compatibility
15
- # Pin CPU PyTorch versions if known
16
- - pytorch::pytorch-cpu # >=2.0.0,<2.4.0 or specific version
 
 
17
  - pytorch::torchvision-cpu
18
  - pytorch::torchaudio-cpu
 
19
  - pip
20
  - pip:
21
- - gradio # Pin: gradio==X.Y.Z
22
- - sentence-transformers # Pin
23
- - unsloth # Pin
24
- - transformers # Pin
25
- - rank_bm25 # Pin
26
- - huggingface_hub # Pin
 
 
 
1
  # environment.yml
2
+ name: myapp-env # Hoặc tên môi trường của bạn
3
  channels:
4
+ - nvidia # Channel chính cho cudatoolkit
5
+ - pytorch # Kênh cho faiss-gpu và pytorch-cpu (làm nền)
6
+ - conda-forge # Cho các gói khác
7
  - defaults
8
  dependencies:
9
+ - python=3.11.12 # Hoặc phiên bản Python của bạn
10
+ # --- CUDA Toolkit và các gói Conda chính ---
11
+ - nvidia::cudatoolkit==11.8 # Yêu cầu CUDA 11.8
12
+ # Yêu cầu faiss-gpu. Conda sẽ cố gắng tìm bản build tương thích.
13
+ # Ví dụ: pytorch::faiss-gpu=1.8.0 (nếu bạn biết phiên bản cụ thể cho py311, cuda11.8)
14
+ # Hoặc conda-forge::faiss-gpu (thường ổn định)
15
+ - conda-forge::faiss-gpu
16
+ - numpy=1.26.4 # Ghim NumPy < 2.0 để tương thích với Faiss
17
+ # Các gói PyTorch CPU làm nền (sẽ được ghi đè bởi bản GPU từ pip)
18
+ - pytorch::pytorch-cpu
19
  - pytorch::torchvision-cpu
20
  - pytorch::torchaudio-cpu
21
+ # --- Các gói Pip ---
22
  - pip
23
  - pip:
24
+ - gradio
25
+ - sentence-transformers
26
+ - unsloth
27
+ - transformers
28
+ - rank_bm25
29
+ - huggingface_hub
30
+ # KHÔNG có torch, torchvision, torchaudio, numpy ở đây
31
+ # ... các gói pip khác nếu cần