Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
huolongshe 36ed789a9c | 1 month ago | |
---|---|---|
app | 1 month ago | |
deploy | 5 months ago | |
serviceboot | 5 months ago | |
webapp | 5 months ago | |
.gitignore | 5 months ago | |
Dockerfile | 5 months ago | |
LICENSE | 5 months ago | |
README.md | 5 months ago | |
application.yml | 5 months ago | |
build-docker.sh | 5 months ago | |
pip-install-reqs.sh | 5 months ago | |
requirements.txt | 5 months ago | |
start.py | 5 months ago |
CubeAI智立方是一套集AI模型自动化服务封装、发布、共享、部署和能力开放等功能于一体的开源AI服务原生平台和工具集,其核心作用在于打通AI模型开发至实际生产应用之间的壁垒,加速AI创新和应用进程,促进AI应用从设计、开发直到部署、运营整个生命周期的自动化快速迭代和演进。
CubeAI智立方开源软件由一系列基础开发工具、平台应用微服务和模型样例程库等软件组成,详见: CubeAI智立方 。
本代码仓库是CubeAI智立方平台的单体集成版,与 微服务版 相比,部署和使用较为方便。
Python 3.7 以上
Node.js
# cd /opt
# wget https://nodejs.org/download/release/v15.1.0/node-v15.1.0-linux-x64.tar.xz
# tar -xvf node-v15.1.0-linux-x64.tar.xz
# ln -s node-v15.1.0-linux-x64 nodejs
# ln -s /opt/nodejs/bin/node /usr/bin/node
# ln -s /opt/nodejs/bin/npm /usr/bin/npm
# ln -s /opt/nodejs/bin/npx /usr/bin/npx
# node -v
# npm -v
# npm config set registry https://registry.npm.taobao.org
# npm config get registry
Angular CLI
# npm install -g @angular/cli@10.1.1
# ln -s /opt/nodejs/bin/ng /usr/bin/ng
# ng --version
建议: PyCharm
如果本机配有NVIDIA GPU显卡,可通过一下步骤来安装配置相应的GPU开发环境:
安装NVIDIA显卡驱动
执行 nvidia-smi 命令验证NVIDIA显卡驱动是否正常安装:
$ nvidia-smi
安装CUDA Toolkit
下载并安装CUDA Toolkit,建议使用10.2版本:
$ wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
$ sudo sh cuda_10.2.89_440.33.01_linux.run
创建符号链接,便于快捷访问:
$ sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda
更新系统环境变量
编辑 /etc/profile 文件,在其末尾追加如下几行内容:
export CUDA_HOME=/usr/local/cuda
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
然后重启系统。
查看CUDA安装情况及版本号:
$ nvcc -V
安装cuDNN(CUDA的深度学习加速库)
从 https://developer.nvidia.com/rdp/cudnn-download 网站选择下载相应版本的cuDNN,例如:cudnn-9.2-linux-x64-v7.6.5.32.tgz
解压cudnn文件,并执行如下操作:
$ tar -xvf cudnn-9.2-linux-x64-v7.6.5.32.tgz
$ cd cudnn-9.2-linux-x64-v7.6.5.32
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
安装Docker引擎,方法和步骤参见: https://docs.docker.com/engine/install/ubuntu/ 或 https://developer.aliyun.com/mirror/docker-ce。
使用非root用户登录,配置其具有操作docker的权限:
$ sudo usermod -aG docker $USER
$ newgrp docker
配置Docker引擎相关参数:
{
"registry-mirrors": [
"https://mirror.baidubce.com/"
],
"live-restore": true,
insecure-registries": ["<本机网卡IP地址(例如:192.168.1.2)>", "<本机网卡IP地址(例如:192.168.1.2)>:8001"]
}
在 /etc/systemd/system/docker.service.d/override.conf文件(如果没有则创建)中添加如下几行内容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-docker2 conntrack ebtables ethtool socat
并在Docker引擎配置参数中添加NVIDIA容器运行时相关参数:
在 /etc/docker/daemon.json 文件中添加如下内容:
{
"registry-mirrors": [
"https://mirror.baidubce.com/"
],
"live-restore": true,
"insecure-registries": ["<本机网卡IP地址>", "<本机网卡IP地址>:8001“],
"exec-opts": ["native.cgroupdriver=systemd"],
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
建议尽量安装docker-compose最新版(1.29以上):
$ sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
$ sudo chmod +x /usr/bin/docker-compose
在开发环境中建议使用minikube来搭建单节点k8s集群,用于部署和运行AI模型,以及将CubeAI平台自身部署至k8s集群。
Minikube官方文档参见:https://minikube.sigs.k8s.io/docs/ 。
建议使用 minikube v1.25.2 版本,集群搭建步骤如下:
如果使用 Ubuntu 16.4 ,需在每次重启系统后执行如下操作(Ubuntu 18.4/20.4 不需要):
修改 /etc/resolv.conf 文件:
将其中 “nameserver 127.0.x.x” 改为: “nameserver 114.114.114.114”
使用非root用户登录,配置其具有操作docker的权限:
$ sudo usermod -aG docker $USER
$ newgrp docker
安装kubectl:
$ curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”
$ sudo install kubectl /usr/local/bin/kubectl
配置HostPath Volume持久化:
$ sudo sysctl fs.protected_regular=0
$ sudo mkdir -p /var/tmp/hostpath-provisioner /tmp/hostpath-provisioner
$ sudo mount --bind /var/tmp/hostpath-provisioner /tmp/hostpath-provisioner
$ echo '/var/tmp/hostpath-provisioner /tmp/hostpath-provisioner none defaults,bind 0 0' |sudo tee -a /etc/fstab
拉取minikube依赖的镜像:
$ docker pull registry.aliyuncs.com/google_containers/storage-provisioner:v5
$ docker tag registry.aliyuncs.com/google_containers/storage-provisioner:v5 registry.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v5
安装minikube:
$ curl -LO https://storage.googleapis.com/minikube/releases/v1.25.2/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
启动minikube:
如果以前启动过其他版本的minikube,需要先清除相关痕迹:
$ minikube delete --all
$ minikube delete
$ sudo rm -rf .kube/
$ sudo rm -rf .minikube/
$ sudo rm -rf /etc/kubernetes/
$ sudo rm /tmp/juju*
$ sudo rm /tmp/minikube*
$ sudo rm -rf /var/lib/minikube/
然后执行如下命令其中minikube:
$ sudo -E minikube start --driver=none --image-mirror-country=cn --image-repository=registry.aliyuncs.com/google_containers --insecure-registry "192.168.1.1" --install-addons false --extra-config=kubelet.cgroup-driver=systemd
注意,上述 --insecure-registry 参数值需要替换成本机网卡的IP地址或地址段,例如192.168.1.x或192.168.1.0/24,请根据实际情况修改。
启动过程中如果出现如下提示:
Exiting due to INET_DOWNLOAD_TIMEOUT: updating control plane: downloading binaries: downloading kubeadm: download failed: https://storage.googleapis.com
可在 /etc/hosts 中加入如下一行试试:
172.217.160.112 storage.googleapis.com
等待显示:Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default,表示集群启动完毕。然后执行:
$ sudo chown -R $USER $HOME/.kube $HOME/.minikube
如果需要在k8s中使用GPU,可通过执行以下命令来配置gpushare(需先克隆下载本仓库代码):
$ sh ~/cubeai_allinone/deploy/minikube/gpushare/deploy_gpushare.sh
配置metrics-server(可选):
$ kubectl apply -f ~/cubenet/cubeai_deploy/minikube/plugin_metrics
$ kubectl -nkube-system patch deploy metrics-server --patch '{"spec":{"template":{"spec":{"containers":[{"name":"metrics-server","args":["--cert-dir=/tmp","--secure-port=4443","--kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP","--kubelet-use-node-status-port","--metric-resolution=15s","--kubelet-insecure-tls"]}]}}}}'
配置dashboard:
$ minikube addons enable dashboard --images="Dashboard=dashboard:v2.5.1,MetricsScraper=metrics-scraper:v1.0.7"
配置远程连接权限,以使CubeAI平台可远程连接此集群:
$ kubectl -nkube-system create sa remote-admin
$ kubectl create clusterrolebinding remote-admin --clusterrole=cluster-admin --serviceaccount=kube-system:remote-admin
安装Istio:
$ wget https://github.com/istio/istio/releases/download/1.13.2/istio-1.13.2-linux-amd64.tar.gz --no-check-certificate
$ tar -xvf istio-1.13.2-linux-amd64.tar.gz
$ ./istio-1.13.2/bin/istioctl install --set hub=mirror.baidubce.com/istio -y
$ kubectl -nistio-system patch svc istio-ingressgateway --patch '{"spec":{"externalIPs":["'"$(minikube ip)"'"],"ports":[{"name":"nexus-ui","port":8081,"protocol":"TCP","targetPort":8081}]}}'
创建CubeAI项目命名空间:
$ kubectl create namespace cubeai
$ kubectl label namespace cubeai istio-injection=enabled
启动dashboard界面:
$ minikube dashboard
等待显示Opening http://127.0.0.1:3xxxx/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...,命令会自动调用浏览器打开dashboard。
如果未自动打开浏览器,请将上述URL复制到浏览器打开。
停止minkube:
$ minikube stop
重启minikube集群:
$ sudo -E minikube start
$ sudo chown -R $USER $HOME/.kube $HOME/.minikube
彻底删除minkube集群:
$ minikube delete --all
在当前用户主目录下克隆本代码仓库:
$ cd
$ git clone https://openi.pcl.ac.cn/cubeai/cubeai_allinone.git
拉起平台运行需要的依赖dockers:
打开一个terminal窗口,运行:
$ cd ~/cubeai_allinone/deploy
$ sudo docker-compose -f docker-compose-dev.yml up
在集成开发环境(例如Pycharm)中分别打开本代码仓库目录,运行 start.py 。
在浏览器中打开: http://127.0.0.1:8080,进行初始化配置:
添加用于访问CubeAI各子平台的应用链接
进入“系统管理|应用管理”页面,创建若干新应用:
- 应用名称: AI模型共享
- URL: /modelhub
- 主题1: 平台导航
- 主题2: homepage
- 所需角色:
- 应用名称: AI能力开放
- URL: /deployment
- 主题1: 平台导航
- 主题2: homepage
- 所需角色:
- 应用名称: 个人中心
- URL: /myinfo
- 主题1: 平台导航
- 主题2: homepage
- 所需角色: ROLE_USER
- 应用名称: 系统管理
- URL: /admin
- 主题1: 平台导航
- 主题2: homepage
- 所需角色: ROLE_ADMIN
刷新页面,试用CubeAI平台各功能。
打包Docker镜像
$ cd ~/cubeai_allinone
$ sh build-dockers.sh
拉起并运行所有docker:
$ cd ~/cubeai_allinone/deploy
$ sudo docker-compose -f docker-compose-prod.yml up
在浏览器中打开:
http://127.0.0.1:8080
运行结束后,停止并删除所有docker容器:
$ sudo docker-compose -f docker-compose-prod.yml down
打包Docker镜像
$ cd ~/cubeai_allinone
$ sh build-dockers.sh
修改配置参数
修改 ~/cubeai_allinone/deploy/minikube/service/ingressgateway.yml文件,将其中所有IP地址替换为本机IP地址。
拉起CubeAI平台运行需要用到的存储资源:
$ kubectl apply -f ~/cubeai_allinone/deploy/minikube/storage
拉起CubeAI平台服务:
$ kubectl apply -f ~/cubeai_allinone/deploy/minikube/service
在浏览器中输入如下地址打开CubeAI平台页面:
http://<命令 minikube ip 的输出值>
运行结束后,停止并删除CubeAI服务:
$ kubectl delete -f ~/cubeai_allinone/deploy/minikube/service
No Description
JavaScript TypeScript HTML Python SVG other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》