diff --git a/README.md b/README.md index f311252..3b75cb1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,57 @@ -# MASSter +# Обложкер [![Deploy frontend](https://github.com/Dungeon-MASSters/MASSter/actions/workflows/deploy-frontend.yml/badge.svg)](https://github.com/Dungeon-MASSters/MASSter/actions/workflows/deploy-frontend.yml) + +## Инструкции для локального запуска + +http://localhost:8080/ - веб приложение + +http://localhost:8090/ - BaaS pocketbase + +Все сервисы приложения упакованы в Docker compose, для запуска необходимо +выполнить следующие действия: + +### 1. Отредактировать пароли в docker-composer.yaml + +Указать данные для подключения с Pocketbase. Для сервисов preprocessor и +generator указать переменные окружения (можно использовать значения по +умолчанию): + +```bash +PB_LOGIN=dev@email.local +PB_PWD=1234567890 +``` + +### 2. Собрать докер образы + +Для сборки выполнить команду: + +```bash +docker compose build # docker-compose build для более старых версий Docker +``` + +### 3. Запустить сервисы + +Для запуска выполнить команду: + +```bash +docker compose up # docker-compose up для более старых версий Docker +``` + +### 4. Создать пользователя Pocketbase + +Зайти в админ панель Pocketbase по адресу: + +http://localhost:8090/_ + +Создать первого пользователя с логином и паролем ранее указанным в +docker-compose.yaml + +### 5. Настроить Oauth + +В админ панели Pocketbase в меню `Settings/Auth providers` добавить провайдера +Vk или Yandex + +### 6. Готово + +Веб-приложение доступно на http://localhost:8080/ diff --git a/docker-compose.yaml b/docker-compose.yaml index 8d280e8..8ce2d90 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -27,7 +27,8 @@ services: preprocessor: build: - context: model/preprocessor/docker + context: model/generator/ + dockerfile: docker/Dockerfile environment: - PB_LINK=http://pocketbase:8090/ @@ -35,12 +36,29 @@ services: - PB_PWD=1234567890 - COL_NAME=text_generation_mvp + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + generator: build: - context: model/generator/docker + context: model/generator/ + dockerfile: docker/Dockerfile environment: - PB_LINK=http://pocketbase:8090/ - PB_LOGIN=dev@email.local - PB_PWD=1234567890 - COL_NAME=text_generation_mvp + + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] diff --git a/frontend/MASSter-frontend/.env.production b/frontend/MASSter-frontend/.env.production index 50cb708..9abf829 100644 --- a/frontend/MASSter-frontend/.env.production +++ b/frontend/MASSter-frontend/.env.production @@ -1 +1 @@ -VITE_PB_HOST="http://pocketbase:8090" +VITE_PB_HOST="http://localhsot:8090" diff --git a/frontend/MASSter-frontend/src/components/avatar-prompt.tsx b/frontend/MASSter-frontend/src/components/avatar-prompt.tsx index f704eb9..50c2db5 100644 --- a/frontend/MASSter-frontend/src/components/avatar-prompt.tsx +++ b/frontend/MASSter-frontend/src/components/avatar-prompt.tsx @@ -1,4 +1,5 @@ import { + ACCEPTED_IMAGE_TYPES, ACCEPTED_VIDEO_TYPES, STYLES } from "@/lib/consts"; @@ -169,24 +170,24 @@ export function AvatarAdvancedPromptForm({ prompt: z.string().min(3).max(500), negativePrompt: z.string().max(500).optional(), style: z.string().default("Нет"), - // inputImage: z - // .custom((v) => v instanceof File, { - // message: "Нужно загрузить картинки для референса" - // }) - // .refine( - // (v) => ACCEPTED_IMAGE_TYPES.includes(v.type), - // "Пока мы поддерживаем только .png и .jpg изображения" - // ) - // .optional(), - // video: z - // .custom((v) => v instanceof File, { - // message: "Нужно загрузить видеоролик" - // }) - // .refine( - // (v) => ACCEPTED_VIDEO_TYPES.includes(v.type), - // "Пока мы поддерживаем только .mp4 видеоролики :(" - // ) - // .optional(), + inputImage: z + .custom((v) => v instanceof File, { + message: "Нужно загрузить картинки для референса" + }) + .refine( + (v) => ACCEPTED_IMAGE_TYPES.includes(v.type), + "Пока мы поддерживаем только .png и .jpg изображения" + ) + .optional(), + video: z + .custom((v) => v instanceof File, { + message: "Нужно загрузить видеоролик" + }) + .refine( + (v) => ACCEPTED_VIDEO_TYPES.includes(v.type), + "Пока мы поддерживаем только .mp4 видеоролики :(" + ) + .optional(), numImages: z.coerce.number().min(1).max(7) }); @@ -207,12 +208,12 @@ export function AvatarAdvancedPromptForm({ formData.append("type", "avatar"); formData.append("num_images", `${data.numImages}`); - // if (data.inputImage) { - // formData.append("input_image", data.inputImage); - // } - // if (data.video) { - // formData.append("video", data.video); - // } + if (data.inputImage) { + formData.append("input_image", data.inputImage); + } + if (data.video) { + formData.append("video", data.video); + } return formData; }; @@ -331,6 +332,59 @@ export function AvatarAdvancedPromptForm({ )} /> + ( + + Референс + + + field.onChange( + e.target.files?.[0] + ) + } + /> + + + Изображение похожее на желаемый + результат + + + + )} + /> + + ( + + Видеоролик + + + field.onChange( + e.target.files?.[0] + ) + } + /> + + + Видеоролик, на основе которого + будет сгенирована аватарка + + + + )} + /> ((v) => v instanceof File, { - // message: "Нужно загрузить видеоролик" - // }) - // .refine( - // (v) => ACCEPTED_VIDEO_TYPES.includes(v.type), - // "Пока мы поддерживаем только .mp4 видеоролики :(" - // ) - // .optional(), + video: z + .custom((v) => v instanceof File, { + message: "Нужно загрузить видеоролик" + }) + .refine( + (v) => ACCEPTED_VIDEO_TYPES.includes(v.type), + "Пока мы поддерживаем только .mp4 видеоролики :(" + ) + .optional(), numImages: z.coerce.number().min(1).max(3) }); @@ -210,9 +207,9 @@ export function BannerAdvancedPromptForm({ // if (data.inputImage) { // formData.append("input_image", data.inputImage); // } - // if (data.video) { - // formData.append("video", data.video); - // } + if (data.video) { + formData.append("video", data.video); + } return formData; }; @@ -332,6 +329,33 @@ export function BannerAdvancedPromptForm({ )} /> + ( + + Видеоролик + + + field.onChange( + e.target.files?.[0] + ) + } + /> + + + Видеоролик, на основе которого + будет сгенирован баннер + + + + )} + /> + ((v) => v instanceof File, { - message: "Нужно загрузить картинки для референса" - }) - .refine( - (v) => ACCEPTED_IMAGE_TYPES.includes(v.type), - "Пока мы поддерживаем только .png и .jpg изображения" - ) - .optional(), + // inputImage: z + // .custom((v) => v instanceof File, { + // message: "Нужно загрузить картинки для референса" + // }) + // .refine( + // (v) => ACCEPTED_IMAGE_TYPES.includes(v.type), + // "Пока мы поддерживаем только .png и .jpg изображения" + // ) + // .optional(), video: z .custom((v) => v instanceof File, { message: "Нужно загрузить видеоролик" @@ -199,9 +198,9 @@ export function VideoCoverAdvancedPromptForm({ formData.append("type", "video"); formData.append("num_images", `${data.numImages}`); - if (data.inputImage) { - formData.append("input_image", data.inputImage); - } + // if (data.inputImage) { + // formData.append("input_image", data.inputImage); + // } if (data.video) { formData.append("video", data.video); } @@ -323,6 +322,7 @@ export function VideoCoverAdvancedPromptForm({ )} /> + {/* field.onChange( - e.target.files + e.target.files?.[0] ) } /> @@ -348,6 +348,7 @@ export function VideoCoverAdvancedPromptForm({ )} /> + */} @@ -50,7 +51,13 @@ export function GridPage() { - + ); } diff --git a/model/generator/docker/env.yml b/model/generator/docker/env.yml index 18d2122..bae9243 100644 --- a/model/generator/docker/env.yml +++ b/model/generator/docker/env.yml @@ -1,4 +1,4 @@ -name: aino-latest +name: base channels: - pytorch - nvidia @@ -18,6 +18,7 @@ dependencies: - certifi=2023.7.22=pyhd8ed1ab_0 - cffi=1.15.1=py39h5eee18b_3 - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - colorama=0.4.6=pyhd8ed1ab_0 - comm=0.1.4=pyhd8ed1ab_0 - cryptography=41.0.3=py39hdda0065_0 - cuda-cccl=12.2.140=0 @@ -58,13 +59,17 @@ dependencies: - entrypoints=0.4=pyhd8ed1ab_0 - exceptiongroup=1.1.3=pyhd8ed1ab_0 - executing=1.2.0=pyhd8ed1ab_0 + - ffmpeg=4.2.2=h20bf706_0 - filelock=3.9.0=py39h06a4308_0 - freetype=2.12.1=h4a9f257_0 - gds-tools=1.7.2.10=0 - giflib=5.2.1=h5eee18b_3 - gmp=6.2.1=h295c915_3 - gmpy2=2.1.2=py39heeb90bb_0 + - gnutls=3.6.13=h85f3911_1 - idna=3.4=py39h06a4308_0 + - imageio=2.31.5=pyh8c1a49c_0 + - imageio-ffmpeg=0.4.9=pyhd8ed1ab_0 - intel-openmp=2023.1.0=hdb19cb5_46305 - ipykernel=6.25.2=pyh2140261_0 - ipython=8.16.1=pyh0d859eb_0 @@ -73,6 +78,7 @@ dependencies: - jpeg=9e=h5eee18b_1 - jupyter_client=7.3.4=pyhd8ed1ab_0 - jupyter_core=4.12.0=py39hf3d152e_0 + - lame=3.100=h7f98852_1001 - lcms2=2.12=h3be6417_0 - ld_impl_linux-64=2.38=h1181459_1 - lerc=3.0=h295c915_0 @@ -100,11 +106,13 @@ dependencies: - libnvjitlink-dev=12.2.140=0 - libnvjpeg=11.8.0.2=0 - libnvjpeg-dev=11.8.0.2=0 + - libopus=1.3.1=h7f98852_1 - libpng=1.6.39=h5eee18b_0 - libsodium=1.0.18=h36c2ea0_1 - libstdcxx-ng=11.2.0=h1234567_1 - libtiff=4.5.1=h6a678d5_0 - libuuid=1.41.5=h5eee18b_0 + - libvpx=1.7.0=h439df22_0 - libwebp=1.3.2=h11a3e52_0 - libwebp-base=1.3.2=h5eee18b_0 - lz4-c=1.9.4=h6a678d5_0 @@ -114,15 +122,18 @@ dependencies: - mkl-service=2.4.0=py39h5eee18b_1 - mkl_fft=1.3.8=py39h5eee18b_0 - mkl_random=1.2.4=py39hdb19cb5_0 + - moviepy=1.0.3=pyhd8ed1ab_1 - mpc=1.1.0=h10f8cd9_1 - mpfr=4.0.2=hb69a4c5_1 - mpmath=1.3.0=py39h06a4308_0 - ncurses=6.4=h6a678d5_0 - nest-asyncio=1.5.8=pyhd8ed1ab_0 + - nettle=3.6=he412f7d_0 - networkx=3.1=py39h06a4308_0 - nsight-compute=2023.2.2.3=0 - numpy=1.26.0=py39h5f9d8c6_0 - numpy-base=1.26.0=py39hb5e798b_0 + - openh264=2.1.1=h4ff587b_0 - openjpeg=2.4.0=h3ad879b_0 - openssl=3.0.11=h7f8727e_2 - packaging=23.2=pyhd8ed1ab_0 @@ -131,6 +142,7 @@ dependencies: - pickleshare=0.7.5=py_1003 - pillow=10.0.1=py39ha6cbd5a_0 - pip=23.2.1=py39h06a4308_0 + - proglog=0.1.9=py_0 - prompt-toolkit=3.0.39=pyha770c72_0 - prompt_toolkit=3.0.39=hd8ed1ab_0 - psutil=5.9.0=py39h5eee18b_0 @@ -158,79 +170,80 @@ dependencies: - torchtriton=2.0.0=py39 - torchvision=0.15.2=cpu_py39h83e0c9b_0 - tornado=6.1=py39hb9d737c_3 + - tqdm=4.66.1=pyhd8ed1ab_0 - traitlets=5.11.2=pyhd8ed1ab_0 - typing_extensions=4.7.1=py39h06a4308_0 - urllib3=1.26.16=py39h06a4308_0 - wcwidth=0.2.8=pyhd8ed1ab_0 - wheel=0.41.2=py39h06a4308_0 + - x264=1!157.20191217=h7b6447c_0 - xz=5.4.2=h5eee18b_0 - zeromq=4.3.4=h2531618_0 - zlib=1.2.13=h5eee18b_0 - zstd=1.5.5=hc292b87_0 - pip: - - accelerate==0.23.0 - - aiohttp==3.8.5 - - aiosignal==1.3.1 - - annotated-types==0.5.0 - - anyio==4.0.0 - - argostranslate==1.8.3 - - async-timeout==4.0.3 - - attrs==23.1.0 - - click==8.1.7 - - coloredlogs==15.0.1 - - ctranslate2==3.20.0 - - dawg==0.8.0 - - dawg-python==0.7.2 - - diffusers==0.19.0 - - docopt==0.6.2 - - ecdsa==0.18.0 - - et-xmlfile==1.1.0 - - flatbuffers==23.5.26 - - frozenlist==1.4.0 - - fsspec==2023.9.2 - - h11==0.14.0 - - h5py==3.9.0 - - httpcore==0.17.3 - - httpx==0.24.1 - - huggingface-hub==0.16.4 - - humanfriendly==10.0 - - importlib-metadata==6.8.0 - - joblib==1.3.2 - - langid==1.1.6 - - multidict==6.0.4 - - nltk==3.8.1 - - num2words==0.5.12 - - onnxruntime==1.15.1 - - openai==0.28.1 - - openpyxl==3.1.2 - - pandas==2.1.1 - - pocketbase==0.9.2 - - protobuf==4.24.4 - - pyasn1==0.5.0 - - pydantic==2.4.2 - - pydantic-core==2.10.1 - - pydantic-settings==2.0.3 - - python-dotenv==1.0.0 - - python-jose==3.3.0 - - pytz==2023.3.post1 - - pyyaml==6.0.1 - - pyzmq==25.1.1 - - razdel==0.5.0 - - regex==2023.10.3 - - rsa==4.9 - - sacremoses==0.0.53 - - safetensors==0.4.0 - - scikit-learn==1.3.1 - - scipy==1.11.3 - - sentence-transformers==2.2.2 - - sentencepiece==0.1.99 - - sniffio==1.3.0 - - stanza==1.1.1 - - threadpoolctl==3.2.0 - - tokenizers==0.14.0 - - tqdm==4.66.1 - - transformers==4.34.0 - - transliterate==1.10.2 - - tzdata==2023.3 - - yarl==1.9.2 - - zipp==3.17.0 + - accelerate==0.23.0 + - aiohttp==3.8.5 + - aiosignal==1.3.1 + - annotated-types==0.5.0 + - anyio==4.0.0 + - argostranslate==1.8.3 + - async-timeout==4.0.3 + - attrs==23.1.0 + - click==8.1.7 + - coloredlogs==15.0.1 + - ctranslate2==3.20.0 + - dawg==0.8.0 + - dawg-python==0.7.2 + - diffusers==0.19.0 + - docopt==0.6.2 + - ecdsa==0.18.0 + - et-xmlfile==1.1.0 + - flatbuffers==23.5.26 + - frozenlist==1.4.0 + - fsspec==2023.9.2 + - h11==0.14.0 + - h5py==3.9.0 + - httpcore==0.17.3 + - httpx==0.24.1 + - huggingface-hub==0.16.4 + - humanfriendly==10.0 + - importlib-metadata==6.8.0 + - joblib==1.3.2 + - langid==1.1.6 + - multidict==6.0.4 + - nltk==3.8.1 + - num2words==0.5.12 + - onnxruntime==1.15.1 + - openai==0.28.1 + - openpyxl==3.1.2 + - pandas==2.1.1 + - pocketbase==0.9.2 + - protobuf==4.24.4 + - pyasn1==0.5.0 + - pydantic==2.4.2 + - pydantic-core==2.10.1 + - pydantic-settings==2.0.3 + - python-dotenv==1.0.0 + - python-jose==3.3.0 + - pytz==2023.3.post1 + - pyyaml==6.0.1 + - pyzmq==25.1.1 + - razdel==0.5.0 + - regex==2023.10.3 + - rsa==4.9 + - sacremoses==0.0.53 + - safetensors==0.4.0 + - scikit-learn==1.3.1 + - scipy==1.11.3 + - sentence-transformers==2.2.2 + - sentencepiece==0.1.99 + - sniffio==1.3.0 + - stanza==1.1.1 + - threadpoolctl==3.2.0 + - tokenizers==0.14.0 + - transformers==4.34.0 + - transliterate==1.10.2 + - tzdata==2023.3 + - yarl==1.9.2 + - zipp==3.17.0 diff --git a/model/preprocessor/docker/env.yml b/model/preprocessor/docker/env.yml new file mode 100644 index 0000000..bae9243 --- /dev/null +++ b/model/preprocessor/docker/env.yml @@ -0,0 +1,249 @@ +name: base +channels: + - pytorch + - nvidia + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=main + - _openmp_mutex=5.1=1_gnu + - asttokens=2.4.0=pyhd8ed1ab_0 + - backcall=0.2.0=pyh9f0ad1d_0 + - backports=1.0=pyhd8ed1ab_3 + - backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0 + - blas=1.0=mkl + - brotlipy=0.7.0=py39h27cfd23_1003 + - bzip2=1.0.8=h7b6447c_0 + - ca-certificates=2023.7.22=hbcca054_0 + - certifi=2023.7.22=pyhd8ed1ab_0 + - cffi=1.15.1=py39h5eee18b_3 + - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - colorama=0.4.6=pyhd8ed1ab_0 + - comm=0.1.4=pyhd8ed1ab_0 + - cryptography=41.0.3=py39hdda0065_0 + - cuda-cccl=12.2.140=0 + - cuda-command-line-tools=11.7.1=0 + - cuda-compiler=12.2.2=0 + - cuda-cudart=11.7.99=0 + - cuda-cudart-dev=11.7.99=0 + - cuda-cuobjdump=12.2.140=0 + - cuda-cupti=11.7.101=0 + - cuda-cuxxfilt=12.2.140=0 + - cuda-documentation=12.2.140=0 + - cuda-driver-dev=12.2.140=0 + - cuda-gdb=12.2.140=0 + - cuda-libraries=11.7.1=0 + - cuda-libraries-dev=11.7.1=0 + - cuda-memcheck=11.8.86=0 + - cuda-nsight=12.2.144=0 + - cuda-nsight-compute=12.2.2=0 + - cuda-nvcc=12.2.140=0 + - cuda-nvdisasm=12.2.140=0 + - cuda-nvml-dev=12.2.140=0 + - cuda-nvprof=12.2.142=0 + - cuda-nvprune=12.2.140=0 + - cuda-nvrtc=11.7.99=0 + - cuda-nvrtc-dev=11.7.99=0 + - cuda-nvtx=11.7.91=0 + - cuda-nvvp=12.2.142=0 + - cuda-opencl=12.2.140=0 + - cuda-opencl-dev=12.2.140=0 + - cuda-profiler-api=12.2.140=0 + - cuda-runtime=11.7.1=0 + - cuda-sanitizer-api=12.2.140=0 + - cuda-toolkit=11.7.1=0 + - cuda-tools=11.7.1=0 + - cuda-visual-tools=11.7.1=0 + - debugpy=1.6.7=py39h6a678d5_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - exceptiongroup=1.1.3=pyhd8ed1ab_0 + - executing=1.2.0=pyhd8ed1ab_0 + - ffmpeg=4.2.2=h20bf706_0 + - filelock=3.9.0=py39h06a4308_0 + - freetype=2.12.1=h4a9f257_0 + - gds-tools=1.7.2.10=0 + - giflib=5.2.1=h5eee18b_3 + - gmp=6.2.1=h295c915_3 + - gmpy2=2.1.2=py39heeb90bb_0 + - gnutls=3.6.13=h85f3911_1 + - idna=3.4=py39h06a4308_0 + - imageio=2.31.5=pyh8c1a49c_0 + - imageio-ffmpeg=0.4.9=pyhd8ed1ab_0 + - intel-openmp=2023.1.0=hdb19cb5_46305 + - ipykernel=6.25.2=pyh2140261_0 + - ipython=8.16.1=pyh0d859eb_0 + - jedi=0.19.1=pyhd8ed1ab_0 + - jinja2=3.1.2=py39h06a4308_0 + - jpeg=9e=h5eee18b_1 + - jupyter_client=7.3.4=pyhd8ed1ab_0 + - jupyter_core=4.12.0=py39hf3d152e_0 + - lame=3.100=h7f98852_1001 + - lcms2=2.12=h3be6417_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=3.0=h295c915_0 + - libcublas=11.10.3.66=0 + - libcublas-dev=11.10.3.66=0 + - libcufft=10.7.2.124=h4fbf590_0 + - libcufft-dev=10.7.2.124=h98a8f43_0 + - libcufile=1.7.2.10=0 + - libcufile-dev=1.7.2.10=0 + - libcufile-static=1.7.2.10=0 + - libcurand=10.3.3.141=0 + - libcurand-dev=10.3.3.141=0 + - libcurand-static=10.3.3.141=0 + - libcusolver=11.4.0.1=0 + - libcusolver-dev=11.4.0.1=0 + - libcusparse=11.7.4.91=0 + - libcusparse-dev=11.7.4.91=0 + - libdeflate=1.17=h5eee18b_1 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=11.2.0=h1234567_1 + - libgomp=11.2.0=h1234567_1 + - libnpp=11.7.4.75=0 + - libnpp-dev=11.7.4.75=0 + - libnvjitlink=12.2.140=0 + - libnvjitlink-dev=12.2.140=0 + - libnvjpeg=11.8.0.2=0 + - libnvjpeg-dev=11.8.0.2=0 + - libopus=1.3.1=h7f98852_1 + - libpng=1.6.39=h5eee18b_0 + - libsodium=1.0.18=h36c2ea0_1 + - libstdcxx-ng=11.2.0=h1234567_1 + - libtiff=4.5.1=h6a678d5_0 + - libuuid=1.41.5=h5eee18b_0 + - libvpx=1.7.0=h439df22_0 + - libwebp=1.3.2=h11a3e52_0 + - libwebp-base=1.3.2=h5eee18b_0 + - lz4-c=1.9.4=h6a678d5_0 + - markupsafe=2.1.1=py39h7f8727e_0 + - matplotlib-inline=0.1.6=pyhd8ed1ab_0 + - mkl=2023.1.0=h213fc3f_46343 + - mkl-service=2.4.0=py39h5eee18b_1 + - mkl_fft=1.3.8=py39h5eee18b_0 + - mkl_random=1.2.4=py39hdb19cb5_0 + - moviepy=1.0.3=pyhd8ed1ab_1 + - mpc=1.1.0=h10f8cd9_1 + - mpfr=4.0.2=hb69a4c5_1 + - mpmath=1.3.0=py39h06a4308_0 + - ncurses=6.4=h6a678d5_0 + - nest-asyncio=1.5.8=pyhd8ed1ab_0 + - nettle=3.6=he412f7d_0 + - networkx=3.1=py39h06a4308_0 + - nsight-compute=2023.2.2.3=0 + - numpy=1.26.0=py39h5f9d8c6_0 + - numpy-base=1.26.0=py39hb5e798b_0 + - openh264=2.1.1=h4ff587b_0 + - openjpeg=2.4.0=h3ad879b_0 + - openssl=3.0.11=h7f8727e_2 + - packaging=23.2=pyhd8ed1ab_0 + - parso=0.8.3=pyhd8ed1ab_0 + - pexpect=4.8.0=pyh1a96a4e_2 + - pickleshare=0.7.5=py_1003 + - pillow=10.0.1=py39ha6cbd5a_0 + - pip=23.2.1=py39h06a4308_0 + - proglog=0.1.9=py_0 + - prompt-toolkit=3.0.39=pyha770c72_0 + - prompt_toolkit=3.0.39=hd8ed1ab_0 + - psutil=5.9.0=py39h5eee18b_0 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - pycparser=2.21=pyhd3eb1b0_0 + - pygments=2.16.1=pyhd8ed1ab_0 + - pyopenssl=23.2.0=py39h06a4308_0 + - pysocks=1.7.1=py39h06a4308_0 + - python=3.9.18=h955ad1f_0 + - python-dateutil=2.8.2=pyhd8ed1ab_0 + - python_abi=3.9=2_cp39 + - pytorch=2.0.1=py3.9_cuda11.7_cudnn8.5.0_0 + - pytorch-cuda=11.7=h778d358_5 + - pytorch-mutex=1.0=cuda + - readline=8.2=h5eee18b_0 + - requests=2.31.0=py39h06a4308_0 + - setuptools=68.0.0=py39h06a4308_0 + - six=1.16.0=pyh6c4a22f_0 + - sqlite=3.41.2=h5eee18b_0 + - stack_data=0.6.2=pyhd8ed1ab_0 + - sympy=1.11.1=py39h06a4308_0 + - tbb=2021.8.0=hdb19cb5_0 + - tk=8.6.12=h1ccaba5_0 + - torchtriton=2.0.0=py39 + - torchvision=0.15.2=cpu_py39h83e0c9b_0 + - tornado=6.1=py39hb9d737c_3 + - tqdm=4.66.1=pyhd8ed1ab_0 + - traitlets=5.11.2=pyhd8ed1ab_0 + - typing_extensions=4.7.1=py39h06a4308_0 + - urllib3=1.26.16=py39h06a4308_0 + - wcwidth=0.2.8=pyhd8ed1ab_0 + - wheel=0.41.2=py39h06a4308_0 + - x264=1!157.20191217=h7b6447c_0 + - xz=5.4.2=h5eee18b_0 + - zeromq=4.3.4=h2531618_0 + - zlib=1.2.13=h5eee18b_0 + - zstd=1.5.5=hc292b87_0 + - pip: + - accelerate==0.23.0 + - aiohttp==3.8.5 + - aiosignal==1.3.1 + - annotated-types==0.5.0 + - anyio==4.0.0 + - argostranslate==1.8.3 + - async-timeout==4.0.3 + - attrs==23.1.0 + - click==8.1.7 + - coloredlogs==15.0.1 + - ctranslate2==3.20.0 + - dawg==0.8.0 + - dawg-python==0.7.2 + - diffusers==0.19.0 + - docopt==0.6.2 + - ecdsa==0.18.0 + - et-xmlfile==1.1.0 + - flatbuffers==23.5.26 + - frozenlist==1.4.0 + - fsspec==2023.9.2 + - h11==0.14.0 + - h5py==3.9.0 + - httpcore==0.17.3 + - httpx==0.24.1 + - huggingface-hub==0.16.4 + - humanfriendly==10.0 + - importlib-metadata==6.8.0 + - joblib==1.3.2 + - langid==1.1.6 + - multidict==6.0.4 + - nltk==3.8.1 + - num2words==0.5.12 + - onnxruntime==1.15.1 + - openai==0.28.1 + - openpyxl==3.1.2 + - pandas==2.1.1 + - pocketbase==0.9.2 + - protobuf==4.24.4 + - pyasn1==0.5.0 + - pydantic==2.4.2 + - pydantic-core==2.10.1 + - pydantic-settings==2.0.3 + - python-dotenv==1.0.0 + - python-jose==3.3.0 + - pytz==2023.3.post1 + - pyyaml==6.0.1 + - pyzmq==25.1.1 + - razdel==0.5.0 + - regex==2023.10.3 + - rsa==4.9 + - sacremoses==0.0.53 + - safetensors==0.4.0 + - scikit-learn==1.3.1 + - scipy==1.11.3 + - sentence-transformers==2.2.2 + - sentencepiece==0.1.99 + - sniffio==1.3.0 + - stanza==1.1.1 + - threadpoolctl==3.2.0 + - tokenizers==0.14.0 + - transformers==4.34.0 + - transliterate==1.10.2 + - tzdata==2023.3 + - yarl==1.9.2 + - zipp==3.17.0 diff --git a/model/preprocessor/libs/models.py b/model/preprocessor/libs/models.py index dd2829f..2ce9c4d 100644 --- a/model/preprocessor/libs/models.py +++ b/model/preprocessor/libs/models.py @@ -14,6 +14,7 @@ from transformers import BlipProcessor, BlipForConditionalGeneration, pipeline import torch import shutil +from libs import logger class Translator: def __init__(self) -> None: