99 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# Tensorflow model server
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Setup server
							 | 
						||
| 
								 | 
							
								Prepare:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								apt install gnupg2
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								Add repo:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								echo "deb [arch=amd64] http://storage.googleapis.com/tensorflow-serving-apt stable tensorflow-model-server tensorflow-model-server-universal" | tee /etc/apt/sources.list.d/tensorflow-serving.list && \
							 | 
						||
| 
								 | 
							
								curl https://storage.googleapis.com/tensorflow-serving-apt/tensorflow-serving.release.pub.gpg | apt-key add -
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								Install package:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								apt update
							 | 
						||
| 
								 | 
							
								apt install tensorflow-model-server
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Setup models
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								mkdir -p /srv/tensorflow/workdir
							 | 
						||
| 
								 | 
							
								mkdir -p /srv/tensorflow/models
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								Choose models from [tfhub.dev](https://tfhub.dev/) and for each do:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								# example: https://tfhub.dev/google/universal-sentence-encoder-multilingual/3
							 | 
						||
| 
								 | 
							
								mkdir -p /srv/tensorflow/models/universal-sentence-encoder-multilingual/3
							 | 
						||
| 
								 | 
							
								cd /srv/tensorflow/models/universal-sentence-encoder-multilingual/3
							 | 
						||
| 
								 | 
							
								wget https://tfhub.dev/google/universal-sentence-encoder-multilingual/3?tf-hub-format=compressed
							 | 
						||
| 
								 | 
							
								tar xvfz universal-sentence-encoder-multilingual_3.tar.gz
							 | 
						||
| 
								 | 
							
								rm universal-sentence-encoder-multilingual_3.tar.gz
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Check:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								tensorflow_model_server --rest_api_port=9000 --model_base_path="/srv/tensorflow/models/universal-sentence-encoder-multilingual/" --model_name=sentences
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Config file `/srv/tensorflow/config`:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								model_config_list: {
							 | 
						||
| 
								 | 
							
								  config: {
							 | 
						||
| 
								 | 
							
								    name: "sentences",
							 | 
						||
| 
								 | 
							
								    base_path: "/srv/tensorflow/models/universal-sentence-encoder-multilingual",
							 | 
						||
| 
								 | 
							
								    model_platform: "tensorflow"
							 | 
						||
| 
								 | 
							
								    model_version_policy: {latest{}},
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  config: {
							 | 
						||
| 
								 | 
							
								    ... (next model)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Systemd integration
							 | 
						||
| 
								 | 
							
								Edit /etc/systemd/system/tensorflow.service
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								[Unit]
							 | 
						||
| 
								 | 
							
								Description=tensorflow model server
							 | 
						||
| 
								 | 
							
								After=network.target auditd.service
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[Service]
							 | 
						||
| 
								 | 
							
								Type=simple
							 | 
						||
| 
								 | 
							
								WorkingDirectory=/srv/tensorflow/workdir
							 | 
						||
| 
								 | 
							
								ExecStart=/usr/bin/tensorflow_model_server --rest_api_port=9000 --model_config_file=/srv/tensorflow/config
							 | 
						||
| 
								 | 
							
								KillMode=process
							 | 
						||
| 
								 | 
							
								Restart=on-failure
							 | 
						||
| 
								 | 
							
								RestartSec=30s
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[Install]
							 | 
						||
| 
								 | 
							
								WantedBy=multi-user.target
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								and
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								systemctl daemon-reload
							 | 
						||
| 
								 | 
							
								systemctl enable tensorflow
							 | 
						||
| 
								 | 
							
								systemctl start tensorflow
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Check:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								http -j GET http://localhost:9000/v1/models/sentences
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Usage
							 | 
						||
| 
								 | 
							
								Show model details:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								http -j GET http://localhost:9000/v1/models/sentences/metadata
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Docs
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `/usr/bin/tensorflow_model_server --help`
							 | 
						||
| 
								 | 
							
								* https://github.com/tensorflow/serving/
							 | 
						||
| 
								 | 
							
								* [REST API](https://www.tensorflow.org/tfx/serving/api_rest)
							 | 
						||
| 
								 | 
							
								* https://github.com/hey-car/tensorflow-model-server
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Datasets:
							 | 
						||
| 
								 | 
							
								* https://www.tensorflow.org/datasets/catalog/overview
							 |