【深度学习】clip-interrogator clip docker 容器启动过程

这篇具有很好参考价值的文章主要介绍了【深度学习】clip-interrogator clip docker 容器启动过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给一张图片,输出图片描述。

dockerfile备忘

只有从dockerfile制作的镜像才有分层结构,加速传输,故第一步需要编写dockerfile,过程是不断调试的,下面是一些制作过程中写的dockerfile片段,可以参考一下语句和写法:

FROM nvidia/cuda:11.6.2-cudnn8-devel-ubuntu18.04
RUN apt-get update && apt-get install -y wget git
RUN wget http://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/conda.sh && \
    bash /tmp/conda.sh -b && rm /tmp/conda.sh
COPY ./deps/ /deps
RUN cp /deps/.condarc /root/
ENV DEBIAN_FRONTEND=noninteractive
# 安装 tzdata 包并设置时区为上海(无交互)
RUN apt-get update && \
    apt-get install -y tzdata && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone
RUN apt-get install -y curl
RUN ~/miniconda3/bin/conda init bash && . ~/.bashrc
RUN . ~/.bashrc && curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh |  bash && \
    apt-get install -y git-lfs && git-lfs install
RUN apt-get install -y python3-pip
# 打印~/.bashrc
RUN . ~/.bashrc && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
RUN . ~/.bashrc && git clone --recurse-submodules https://github.com/lkwq007/stablediffusion-infinity && \
    cd stablediffusion-infinity &&  ~/miniconda3/bin/conda env create -f environment.yml
#RUN . ~/.bashrc && ~/miniconda3/bin/conda activate sd-inf && \
#    ~/miniconda3/bin/conda install -c conda-forge -y diffusers transformers ftfy accelerate && \
#    ~/miniconda3/bin/conda update -c conda-forge -y diffusers transformers ftfy accelerate && \
#    pip install -U gradio


FROM kevinchina/deeplearning:sd_base_cuda116
RUN . ~/.bashrc && conda activate sd-inf && pip install  clip-interrogator==0.6.0  && pip install fastapi uvicorn python-multipart requests opencv-python numpy
RUN . ~/.bashrc && conda activate sd-inf && cd /deps/ && python t.py

FROM kevinchina/deeplearning:sd_base_cuda116clip
RUN . ~/.bashrc && mkdir /app/ && apt-get install -y libopencv-dev
COPY ./deps/main_clip.py /app/


FROM kevinchina/deeplearning:sd_base_cuda116clip1
RUN . ~/.bashrc && echo "conda activate sd-inf" >>~/.bashrc
RUN . ~/.bashrc && pip uninstall clip-interrogator -y
RUN . ~/.bashrc && git clone https://github.com/xddun/clip-interrogator.git


FROM kevinchina/deeplearning:sd_base_cuda116clip4
WORKDIR /app
RUN rm /app/main_clip.py
COPY ./deps/main_clip.py /app/
COPY ./deps/startProject.sh /app/
EXPOSE 8001
ENTRYPOINT ["bash", "/app/startProject.sh"]

比较重要的是最后一个dockerfile,可以通过kevinchina/deeplearning:sd_base_cuda116clip4作为基础镜像。

FROM kevinchina/deeplearning:sd_base_cuda116clip4
WORKDIR /app
RUN rm /app/main_clip.py
COPY ./deps/main_clip.py /app/
COPY ./deps/startProject.sh /app/
EXPOSE 8001
ENTRYPOINT ["bash", "/app/startProject.sh"]

ENTRYPOINT [“bash”, “/app/startProject.sh”]

启动web服务的脚本:

#!/bin/bash
set -u
cd /app/ && nohup /root/miniconda3/envs/sd-inf/bin/python main_clip.py >/log.alg  2>&1 &
echo "----------------------------------------"
echo "running..."
while [ 1 ]
do
    echo "sleep"
    sleep 3600
done

常用docker指令

安装docker nvidia支持(确认有docker后):

# 1、添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
sudo curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 2、安装并重启
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

给docker image命名:

docker tag e225437cc81a kevinchina/deeplearning:sd_base_cuda116clip7

在docker build的时候直接给名字(那个点是宿主机当前目录):

docker build -f Dockerfile -t kevinchina/deeplearning:sd_base_cuda116clip7 .

在后台直接执行docker web服务(因为dockerfile里有ENTRYPOINT [“bash”, “/app/startProject.sh”]):

docker run -d --gpus all -p 8001:8001  kevinchina/deeplearning:sd_base_cuda116clip7

以交互形态进入刚才启动的容器:

docker ps # 查看容器hash id,不是镜像hash id
docker exec -it 4209c872c48b bash # 进入后可以去查看日志/log.alg

向docker center推送镜像:

docker push kevinchina/deeplearning:sd_base_cuda116clip7

web服务脚本

# -*- coding:utf-8 -*-
import traceback
from typing import List, Optional, Union
import uvicorn
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI, File, Form, UploadFile
import cv2
import numpy as np
from PIL import Image
from clip_interrogator import Config, Interrogator

ci = Interrogator(Config(clip_model_name="ViT-L-14/openai"))

app = FastAPI(
    title='FastAPI Tutorial',
    description='FastAPI教程',
    version='1.0.0',
    docs_url='/docs',
    redoc_url='/redocs',
)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.post("/files/")
async def alg_file(
        fileb: UploadFile = File(...)
):
    try:
        img = cv2.imdecode(np.fromstring(fileb.file.read(), np.uint8), cv2.IMREAD_COLOR)
        pil_image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        return ci.interrogate(pil_image)
    except:
        traceback.print_exc()
        return "-1"


if __name__ == '__main__':
    uvicorn.run('main_clip:app', host='0.0.0.0', port=8001, reload=False, workers=1)


访问接口

容器启动是需要加载模型的,故需要访问要等1分钟后,比较稳定。

import requests
url = "http://0.0.0.0:8001/files/"
with open("1.png", "rb") as f:
    res = requests.post(url=url, files={"fileb": f}, timeout=None)
    print(res.json())


访问成功:

root@euler-MS-7D30:/home/xiedong/project_docker/deps# python3 req.py
arafed kingfisher with open beak and long bill, featured on unsplash, screaming face, colorised, sauron, with a very large mouth, that has the form of a dragonfly, perfect face template, kenku, visibly angry, closeup of the face, sneer, devouring

【深度学习】clip-interrogator clip docker 容器启动过程,深度学习机器学习,深度学习,docker,人工智能,clip

文件

可以这里下载docker的一些文件:
https://download.csdn.net/download/x1131230123/88359051

总结

启动容器:

docker run -d --gpus all -p 8001:8001 kevinchina/deeplearning:sd_base_cuda116clip7

访问请求:
http://10.20.31.19:8001/docs

注意:部署的时候有点慢,可以访问到接口文档后就说明可以了。文章来源地址https://www.toymoban.com/news/detail-731943.html

到了这里,关于【深度学习】clip-interrogator clip docker 容器启动过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度linux社区版 20.8 安装 nvidia-docker,启动Stable Diffusion WebUI docker 容器

    以下为失败的记录,成功方法直接跳到末尾。  说明: 深度apt 源中无法直接安装nvidia-docker  github地址: GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs 下载最新release https://github.com/NVIDIA/nvidia-docker/archive/refs/tags/v2.13.0.tar.gz 使用国内源 新建文件:ubuntu20.04

    2024年02月16日
    浏览(43)
  • docker学习:docker容器管理

    Docker 是一种开源的容器化平台,可以帮助开发人员和系统管理员更轻松地创建、部署和运行应用程序。它利用 Linux容器技术,将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行,从而实现应用程序的快速部署和可移植性。 1、直接拉取别人构建好的官

    2024年02月11日
    浏览(35)
  • docker学习16-Docker 容器设置时区

    最近遇到一个问题,在本机部署操作时,获取本机当前时间存到mysql数据库,时间是当前北京时间没问题。 但是用Docker 容器部署项目,发现时间少了8个小时,于是想到是docker容器的内部时区问题。 docker 容器一般是debian系统,默认是UTC标准时间 或者先删除localtime 再给软链接

    2024年02月13日
    浏览(45)
  • Docker 容器学习笔记

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月11日
    浏览(42)
  • Docker学习路线10:容器安全

    容器安全是实施和管理像Docker这样的容器技术的关键方面。它包括一组实践、工具和技术,旨在保护容器化应用程序及其运行的基础架构。在本节中,我们将讨论一些关键的容器安全考虑因素、最佳实践和建议。 隔离对于确保容器化环境的强大性和安全性至关重要。容器应该

    2024年02月16日
    浏览(40)
  • Docker学习路线9:运行容器

    要启动一个新的容器,我们使用 docker run 命令,后跟镜像名称。基本语法如下: 例如,要运行官方的 Nginx 镜像,我们可以使用: 这会启动一个新的容器,并将主机的端口 8080 映射到容器的端口 80。 要列出所有正在运行的容器,请使用 docker ps 命令。要查看所有容器(包括已

    2024年02月16日
    浏览(41)
  • docker学习笔记 一-----容器介绍

    最近准备离职了,提前学习些新的知识,找工作的时候发现了很多公司招聘需求上都要求要懂docker和k8s,所以学习一下吧。 一、容器介绍 既然要学docker就首先要了解一下什么是容器:容器也是一种虚拟化的方案。但是容器与虚拟机不同,虚拟机是通过中间层将一台或多台虚

    2024年04月10日
    浏览(44)
  • Docker学习路线13:部署容器

    部署容器是使用Docker和容器化管理应用程序更高效、易于扩展和确保跨环境一致性性能的关键步骤。本主题将为您概述如何部署Docker容器以创建和运行应用程序。 Docker容器是轻量级、可移植且自我包含的环境,可以运行应用程序及其依赖项。部署容器涉及启动、管理和扩展这

    2024年02月15日
    浏览(44)
  • Docker学习路线7:构建容器镜像

    容器镜像是可执行的软件包,包括运行应用程序所需的所有内容:代码、运行时、系统工具、库和设置。通过构建自定义镜像,您可以在任何支持Docker的平台上无缝地部署应用程序及其所有依赖项。 构建容器镜像的关键组件是 Dockerfile 。它本质上是一个包含有关如何组装 D

    2024年02月16日
    浏览(50)
  • Docker 容器学习笔记以及安装配置

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包