<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.rws.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker</link><description>Language Weaver Edge Wiki</description><dc:language>en-US</dc:language><generator>Telligent Community 12 Non-Production</generator><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker</link><pubDate>Tue, 14 May 2024 18:20:30 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Current Revision posted to Wiki by Brian John on 5/14/2024 6:20:30 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as external ports&amp;nbsp;in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefined number of containers as manifested&amp;nbsp;in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;span&gt;$ docker pull docker.edge.languageweaver.com/sdl/mtedge:8.6.4&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic and&amp;nbsp;.env files provided by RWS to current user&amp;#39;s home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs on docker host. (can be removed&amp;nbsp;after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up. This will also create docker volumes&amp;nbsp;mtedge-controller-pvc &amp;amp;&amp;nbsp;mtedge-lp-pvc&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied and then restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete locally installed language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines or PUs for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/14</link><pubDate>Tue, 14 May 2024 18:19:56 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 14 posted to Wiki by Brian John on 5/14/2024 6:19:56 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as external ports&amp;nbsp;in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefined number of containers as manifested&amp;nbsp;in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;&lt;span&gt;$ docker.edge.languageweaver.com/sdl/mtedge:8.6.4&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic and&amp;nbsp;.env files provided by RWS to current user&amp;#39;s home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs on docker host. (can be removed&amp;nbsp;after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up. This will also create docker volumes&amp;nbsp;mtedge-controller-pvc &amp;amp;&amp;nbsp;mtedge-lp-pvc&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied and then restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete locally installed language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines or PUs for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/13</link><pubDate>Tue, 14 May 2024 18:13:17 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 13 posted to Wiki by Brian John on 5/14/2024 6:13:17 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as external ports&amp;nbsp;in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefined number of containers as manifested&amp;nbsp;in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;code&gt;&lt;span&gt;$ docker pull docker.edge.languageweaver.com/mtedge/sdl-mtedge:8.6.4&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic and&amp;nbsp;.env files provided by RWS to current user&amp;#39;s home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs on docker host. (can be removed&amp;nbsp;after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up. This will also create docker volumes&amp;nbsp;mtedge-controller-pvc &amp;amp;&amp;nbsp;mtedge-lp-pvc&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied and then restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete locally installed language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines or PUs for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/12</link><pubDate>Tue, 14 May 2024 17:17:51 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 12 posted to Wiki by Brian John on 5/14/2024 5:17:51 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as external ports&amp;nbsp;in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefined number of containers as manifested&amp;nbsp;in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic and&amp;nbsp;.env files provided by RWS to current user&amp;#39;s home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs on docker host. (can be removed&amp;nbsp;after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up. This will also create docker volumes&amp;nbsp;mtedge-controller-pvc &amp;amp;&amp;nbsp;mtedge-lp-pvc&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied and then restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete locally installed language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines or PUs for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/11</link><pubDate>Tue, 14 May 2024 17:07:55 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 11 posted to Wiki by Brian John on 5/14/2024 5:07:55 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as external ports&amp;nbsp;in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details could be reconfigured by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/10</link><pubDate>Tue, 14 May 2024 17:06:38 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 10 posted to Wiki by Brian John on 5/14/2024 5:06:38 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; docker-compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access for user mtedge.&lt;/li&gt;
&lt;li&gt;Local storage as recommended for the image &amp;amp; language pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details could be reconfigured by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/9</link><pubDate>Tue, 14 May 2024 17:02:29 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 9 posted to Wiki by Brian John on 5/14/2024 5:02:29 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/3617.lwedge_2D00_docker.png" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details could be reconfigured by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/8</link><pubDate>Tue, 14 May 2024 16:57:21 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 8 posted to Wiki by Brian John on 5/14/2024 4:57:21 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details could be reconfigured by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/7</link><pubDate>Tue, 14 May 2024 16:48:40 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 7 posted to Wiki by Brian John on 5/14/2024 4:48:40 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the recommended minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Cleanup
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized by modifying the docker-compose.yml and Edge admin user details could be reconfigured by modifying the .env file. All modifications require a restart of docker containers by running docker-compose up -d.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/decrease number of Job Engines, Training Engines or add/modify Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/6</link><pubDate>Tue, 14 May 2024 16:42:02 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 6 posted to Wiki by Brian John on 5/14/2024 4:42:02 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add a new line as below.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install unzip, docker &amp;amp; docker-compose on the host.&lt;br /&gt;eg. on a Ubuntu EC2 host, run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo apt update&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo apt install -y docker.io docker-compose unzip&lt;/code&gt;&lt;br /&gt;&lt;code&gt;$&amp;nbsp;sudo usermod -a -G docker mtedge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Login to docker repo and pull LW Edge docker image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker login &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ docker pull &lt;/span&gt;&lt;span&gt;docker.edge.languageweaver.com&lt;/span&gt;&lt;span&gt;/sdl/mtedge:&lt;/span&gt;&lt;span&gt;8.6&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy docker-compose.yml, sdl-ets.lic &amp;amp; .env files provided by RWS to current users home folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Download &amp;amp; install required language pairs. (can be uninstalled after a successful docker deployment).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sftp user&lt;/span&gt;&lt;span&gt;@files&lt;/span&gt;&lt;span&gt;.edge.languageweaver.com&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ get&amp;nbsp;&lt;/span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ unzip &lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer.zip&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;$ sudo ./&lt;span&gt;Language_Weaver_Edge_XxxXxx_Generic_SRV_TNM_X_X_x_1_installer&lt;/span&gt;/setup-linux-x64.run --mode unattended&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Start containers by running docker-compose up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ docker-compose up -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy license file sdl-ets.lic to mtedge-controller-pvc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;docker cp sdl-ets.lic mtedge-controller:/mnt/controller/conf/sdl-ets.lic&lt;/code&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Copy language pair models to&amp;nbsp;mtedge-lp-pvc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo docker cp /opt/sdl/ets/lps/. mtedge-controller:/opt/sdl/ets/lps&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Wait until all language pair models are copied &amp;amp; restart translation engines from UI or run a docker-compose down &amp;amp; up&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Cleanup
&lt;ol&gt;
&lt;li&gt;Delete language pair models, installation zip files &amp;amp; folders from the host.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf /etc/opt/sdl&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ sudo rm -rf Language_Weaver_Edge_*&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a docker host could be reconfigured/resized while the Language Weaver Edge service is running. Reconfiguration can be performed using a helm upgrade or directly modifying relevant Kubernetes objects. The simplest way is to modify the &amp;ldquo;values.yaml&amp;rdquo; and run a helm upgrade.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed while the system is running are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/Decrease the size of the pool of Job Engines, Training Engines or add/modify the pool of Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Auto scale the number of Translation Engines, depending on the system load.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/5</link><pubDate>Tue, 14 May 2024 15:26:03 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 5 posted to Wiki by Brian John on 5/14/2024 3:26:03 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add new line as below&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install docker &amp;amp; docker-compose on the host.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Helm charts &amp;amp; example &amp;ldquo;values.yaml&amp;rdquo; files are provided by RWS for easy deployment.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Upgrades &amp;amp; rescaling of Edge configuration is possible with helm upgrades. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engines require GPU nodes in the Kubernetes cluster for better performance. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;LW Edge license &amp;amp; default admin accounts are saved as Kubernetes secrets.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of the Controller pod could be a standard RWO storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of Language Pairs requires a high performance, case sensitive RWX storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs are deployed to the persistent volume using Kubernetes Jobs.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Depending on the size of the Language Pair and I/O bandwidth, each Language Pair installation job will generally run for about 2-10 minutes. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Whilst it is possible to deploy the Edge software during Language Pair installation process, Translation Engines will not start or be usable until all the above Kubernetes jobs are completed.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Most likely used parameters are described in the sample &amp;ldquo;google.yaml&amp;rdquo; &amp;amp; &amp;ldquo;azure.yaml&amp;rdquo; files provided. Consult &amp;ldquo;values.yaml&amp;rdquo; inside the chart &amp;ldquo;sdl-mtedge-8.6.2.tgz&amp;rdquo; for a complete list of parameters.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a Kubernetes cluster could be reconfigured/resized while the Language Weaver Edge service is running. Reconfiguration can be performed using a helm upgrade or directly modifying relevant Kubernetes objects. The simplest way is to modify the &amp;ldquo;values.yaml&amp;rdquo; and run a helm upgrade.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed while the system is running are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/Decrease the size of the pool of Job Engines, Training Engines or add/modify the pool of Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Auto scale the number of Translation Engines, depending on the system load.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/4</link><pubDate>Tue, 14 May 2024 15:24:09 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 4 posted to Wiki by Brian John on 5/14/2024 3:24:09 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Docker host&amp;nbsp;with CPU/RAM totalling up to the minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. Azure, EC2, VMWare&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Docker &amp;amp; Docker-Compose installed on the host.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Sudo access granted to user mtedge.&lt;/li&gt;
&lt;li&gt;Recommended size of the local storage for the image &amp;amp; Language Pair models.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a container&amp;nbsp;in docker and Edge UI &amp;amp; API are published as a service in the docker overlay network. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as containers&amp;nbsp;and could be manually&amp;nbsp;configured to scale up/down based on the predefine number of containers defined in the docker-compose.yml file. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in docker volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All containers use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Create mtedge user &amp;amp; group with the id 10001.&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ groupadd mtedge -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ useradd mtedge -u &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -g &lt;/span&gt;&lt;span&gt;10001&lt;/span&gt;&lt;span&gt; -m -s /sbin/nologin&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Grant sudo access to user mtedge.&lt;br /&gt;eg. on a Ubuntu EC2 host, edit&amp;nbsp;/etc/sudoers.d/90-cloud-init-users file and add new line as below&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;$ vi /etc/sudoers.d/&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;-cloud-init-users&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;mtedge ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install docker &amp;amp; docker-compose on the host.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Helm charts &amp;amp; example &amp;ldquo;values.yaml&amp;rdquo; files are provided by RWS for easy deployment.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Upgrades &amp;amp; rescaling of Edge configuration is possible with helm upgrades. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engines require GPU nodes in the Kubernetes cluster for better performance. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;LW Edge license &amp;amp; default admin accounts are saved as Kubernetes secrets.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of the Controller pod could be a standard RWO storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of Language Pairs requires a high performance, case sensitive RWX storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs are deployed to the persistent volume using Kubernetes Jobs.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Depending on the size of the Language Pair and I/O bandwidth, each Language Pair installation job will generally run for about 2-10 minutes. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Whilst it is possible to deploy the Edge software during Language Pair installation process, Translation Engines will not start or be usable until all the above Kubernetes jobs are completed.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Most likely used parameters are described in the sample &amp;ldquo;google.yaml&amp;rdquo; &amp;amp; &amp;ldquo;azure.yaml&amp;rdquo; files provided. Consult &amp;ldquo;values.yaml&amp;rdquo; inside the chart &amp;ldquo;sdl-mtedge-8.6.2.tgz&amp;rdquo; for a complete list of parameters.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a Kubernetes cluster could be reconfigured/resized while the Language Weaver Edge service is running. Reconfiguration can be performed using a helm upgrade or directly modifying relevant Kubernetes objects. The simplest way is to modify the &amp;ldquo;values.yaml&amp;rdquo; and run a helm upgrade.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed while the system is running are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/Decrease the size of the pool of Job Engines, Training Engines or add/modify the pool of Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Auto scale the number of Translation Engines, depending on the system load.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/3</link><pubDate>Tue, 14 May 2024 14:54:06 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 3 posted to Wiki by Brian John on 5/14/2024 2:54:06 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Docker&amp;nbsp;&amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Docker image and sample &amp;ldquo;docker-compose.yml&amp;rdquo; files are provided by RWS for easy deployment. A docker host with a GPU is preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-31/lwedge_2D00_docker.png" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Kubernetes cluster with node CPU/RAM totalling up to the minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. AKS, EKS, GKE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Autoscaling is enabled in Kubernetes cluster. (optional)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Ingress controller to access Kubernetes services. &lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. NGINX&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Storage classes in Kubernetes that support both RWO &amp;amp; RWX volume types. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a pod in Kubernetes and Edge UI &amp;amp; API are published as a service. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as Stateful Sets and could be configured to auto scale based on the pod CPU usage or predefine the number of replica pods. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in persistent volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All pods use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Helm charts &amp;amp; example &amp;ldquo;values.yaml&amp;rdquo; files are provided by RWS for easy deployment.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Upgrades &amp;amp; rescaling of Edge configuration is possible with helm upgrades. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engines require GPU nodes in the Kubernetes cluster for better performance. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;LW Edge license &amp;amp; default admin accounts are saved as Kubernetes secrets.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of the Controller pod could be a standard RWO storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of Language Pairs requires a high performance, case sensitive RWX storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs are deployed to the persistent volume using Kubernetes Jobs.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Depending on the size of the Language Pair and I/O bandwidth, each Language Pair installation job will generally run for about 2-10 minutes. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Whilst it is possible to deploy the Edge software during Language Pair installation process, Translation Engines will not start or be usable until all the above Kubernetes jobs are completed.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Most likely used parameters are described in the sample &amp;ldquo;google.yaml&amp;rdquo; &amp;amp; &amp;ldquo;azure.yaml&amp;rdquo; files provided. Consult &amp;ldquo;values.yaml&amp;rdquo; inside the chart &amp;ldquo;sdl-mtedge-8.6.2.tgz&amp;rdquo; for a complete list of parameters.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a Kubernetes cluster could be reconfigured/resized while the Language Weaver Edge service is running. Reconfiguration can be performed using a helm upgrade or directly modifying relevant Kubernetes objects. The simplest way is to modify the &amp;ldquo;values.yaml&amp;rdquo; and run a helm upgrade.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed while the system is running are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/Decrease the size of the pool of Job Engines, Training Engines or add/modify the pool of Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Auto scale the number of Translation Engines, depending on the system load.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/2</link><pubDate>Tue, 14 May 2024 14:41:10 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 2 posted to Wiki by Brian John on 5/14/2024 2:41:10 PM&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge could easily be deployed in Kubernetes &amp;amp; the deployment architecture is similar to an on-prem Windows/Linux deployment. Helm charts and sample &amp;ldquo;values.yaml&amp;rdquo; files are provided by RWS for easy deployment. Kubernetes GPU nodes are preferred for Training Engines.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Minimum requirement&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Kubernetes cluster with node CPU/RAM totalling up to the minimum requirement.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. AKS, EKS, GKE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Autoscaling is enabled in Kubernetes cluster. (optional)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Ingress controller to access Kubernetes services. &lt;br /&gt;&lt;/span&gt;&lt;span&gt;e.g. NGINX&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Storage classes in Kubernetes that support both RWO &amp;amp; RWX volume types. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Edge Controller host is deployed as a pod in Kubernetes and Edge UI &amp;amp; API are published as a service. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engines, Translation Engines &amp;amp; Training Engines are deployed as Stateful Sets and could be configured to auto scale based on the pod CPU usage or predefine the number of replica pods. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs and the Edge configuration is saved in persistent volumes. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;All pods use the same docker base image.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Helm charts &amp;amp; example &amp;ldquo;values.yaml&amp;rdquo; files are provided by RWS for easy deployment.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Upgrades &amp;amp; rescaling of Edge configuration is possible with helm upgrades. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engines require GPU nodes in the Kubernetes cluster for better performance. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;LW Edge license &amp;amp; default admin accounts are saved as Kubernetes secrets.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of the Controller pod could be a standard RWO storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Persistent volume of Language Pairs requires a high performance, case sensitive RWX storage class. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Language Pairs are deployed to the persistent volume using Kubernetes Jobs.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Depending on the size of the Language Pair and I/O bandwidth, each Language Pair installation job will generally run for about 2-10 minutes. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Whilst it is possible to deploy the Edge software during Language Pair installation process, Translation Engines will not start or be usable until all the above Kubernetes jobs are completed.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Most likely used parameters are described in the sample &amp;ldquo;google.yaml&amp;rdquo; &amp;amp; &amp;ldquo;azure.yaml&amp;rdquo; files provided. Consult &amp;ldquo;values.yaml&amp;rdquo; inside the chart &amp;ldquo;sdl-mtedge-8.6.2.tgz&amp;rdquo; for a complete list of parameters.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Reconfigure&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Language Weaver Edge instance in a Kubernetes cluster could be reconfigured/resized while the Language Weaver Edge service is running. Reconfiguration can be performed using a helm upgrade or directly modifying relevant Kubernetes objects. The simplest way is to modify the &amp;ldquo;values.yaml&amp;rdquo; and run a helm upgrade.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Typical values that could be changed while the system is running are:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Bootstrap Language Weaver Edge admin user.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Install new Language Pairs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Increase/Decrease the size of the pool of Job Engines, Training Engines or add/modify the pool of Translation Engines for a given Language Pair. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Auto scale the number of Translation Engines, depending on the system load.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Custom environment variables could be set independently for:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Controller pod.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Job Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Translation Engine pods - each Language Pair has its own environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Training Engine pods - all pods share the same environment variables.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Edge API&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;The API key is automatically prefixed with &amp;ldquo;u_&amp;rdquo; + username + &amp;rdquo;_&amp;rdquo; when created. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;For an example, to make a REST API call for user &lt;em&gt;&lt;strong&gt;admin@example.com&lt;/strong&gt;&lt;/em&gt; with API key &lt;em&gt;&lt;strong&gt;myapikey1234&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;$ curl -u u_admin@example.com_myapikey1234:&amp;nbsp;&lt;a id="" href="https://myhost.example.com/api/v2/"&gt;https://myhost.example.com/api/v2/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Running Language Weaver Edge on Docker</title><link>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker/revision/1</link><pubDate>Tue, 14 May 2024 14:39:19 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:22a63174-2a7c-4054-b3d1-954248e9443c</guid><dc:creator>Brian John</dc:creator><comments>https://community.rws.com/product-groups/linguistic-ai/edge/w/wiki/6797/running-language-weaver-edge-on-docker#comments</comments><description>Revision 1 posted to Wiki by Brian John on 5/14/2024 2:39:19 PM&lt;br /&gt;
&lt;h1 class="name"&gt;Running Language Weaver Edge on Docker&lt;/h1&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>