当前位置:   article > 正文

ubuntu服务器docker环境实现基于diffusers的stable diffusion部署

ubuntu服务器docker环境实现基于diffusers的stable diffusion部署

部分配置:

腾讯云环境,Ubuntu 20.04.5 LTS ,GPU:T4。

前置准备:

【创建docker环境】

这是运维同学帮忙搞的,这里就不细说了。

主要实现创建一个能够使用nvidia driver的docker,命名为chatgpt。装好GPU驱动,能够实现在docker内使用nvidia-smi命令查看GPU情况。这里是根据这篇文章操作的Docker容器如何优雅使用NVIDIA GPU-腾讯云开发者社区-腾讯云

题外话:这里docker container内部的CUDA version和外部机子上显示的不同。这里是11.4,外面只支持到11.0。保险起见都用cuda 10.2,保证稳定。

可能有帮助的命令:

-查看linux版本:cat /etc/os-release

step1. 找到对应cuda版本

历史cuda的release:CUDA Toolkit Archive | NVIDIA Developer

cuda 10.2:CUDA Toolkit 10.2 Download | NVIDIA Developer

-下载命令:


<code class="language-plaintext hljs">wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
</code>

没有ubuntu20.04的对应版本没关系,直接楞搞18.04的就行。(向后兼容)下载之后,运行run文件。


<code class="language-plaintext hljs">sudo sh cuda_10.2.89_440.33.01_linux.run</code>

执行遇到报错,缺少一个文件:


<code class="language-plaintext hljs">sh cuda_10.2.89_440.33.01_linux.run 
./cuda-installer: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory</code>

直接安装就行: apt install libxml2

-参考:(120条消息) 安装cuda报错:./cuda-installer: error while loading shared libraries: libxml2.so.2_CrystalheartLi的博客-CSDN博客

-安装过程中会需要选 时区和城市 对应选择就可以。

完成后,再次运行run文件会报错:


<code class="language-plaintext hljs"> Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.</code>

查找一下cuda10.2的要求:需要gcc7.3.0

看一下container里面的版本:


<code class="language-plaintext hljs">gcc -V</code>

nice! 甚至没装!非常纯净(狗头)


<code class="language-plaintext hljs">apt install gcc-7  </code>

再次启动run文件,还是报错

下载gcc-7.5 并且做软连接之后解决。

-参考:Ubuntu 20.04 安装 cuda10报错 Error: unsupported compiler: 9.4.0. Use --override to override this check. - luoganttcc - 博客园 (cnblogs.com)

驱动已经安装,把第一项取消选择之后install。

还是报错。

执行


<code class="language-plaintext hljs"> sh cuda_10.2.89_440.33.01_linux.run --silent --toolkit --samples --librarypath=/usr/local/cuda-10.2</code>

后搞定。

step2. 安装anaconda

这部分教程太多了,也非常简单就不细讲了。

装完之后我们下一步创建虚拟环境

step3. 创建虚拟环境

python 版本限制3.10.9

step4. 尝试安装stable diffusion 需要的组件

stabilityai/stable-diffusion-2 · Hugging Face

pip install -i Simple Index transformers

以及其他几个包。这部分比较简单就不细讲了。

step5. 基于diffusers写一个基于fastapi的python脚本,直接nohup python启动就完事~

我这个目前已经写的很复杂了,集成了很多和其他系统的交互,就不贴源码了。贴一个GPT写的版本吧。大概展示个意思。

  1. from fastapi import FastAPI, HTTPException
  2. from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
  3. from PIL import Image
  4. import io
  5. import base64
  6. import uvicorn
  7. app = FastAPI()
  8. model_id = "stabilityai/stable-diffusion-2"
  9. scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
  10. pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
  11. pipe = pipe.to("cuda")
  12. def generate_image(prompt):
  13. image = pipe(prompt).images[0]
  14. return image
  15. def image_to_base64(image):
  16. buffered = io.BytesIO()
  17. image.save(buffered, format="PNG")
  18. return base64.b64encode(buffered.getvalue()).decode("utf-8")
  19. @app.get("/generate_image/{prompt}")
  20. def generate_image_api(prompt: str):
  21. try:
  22. generated_image = generate_image(prompt)
  23. base64_image = image_to_base64(generated_image)
  24. return {"base64_image": base64_image}
  25. except Exception as e:
  26. raise HTTPException(status_code=500, detail=f"Error generating image: {str(e)}")
  27. if __name__ == "__main__":
  28. uvicorn.run(app, host="127.0.0.1", port=8000, reload=True)

Good luck!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/445789
推荐阅读
相关标签
  

闽ICP备14008679号