tensorflow 在Google Colab笔记本中运行localhost服务器

yvfmudvl  于 2023-06-30  发布在  Go
关注(0)|答案(4)|浏览(161)

我正在尝试使用Github中的repo代码在Google Colab中使用Tensorflow实现Tacotron语音合成,下面是我的代码,直到使用本地主机服务器的步骤为止,我如何在Google Colab中的笔记本中运行本地主机服务器?
我的代码:

!pip install tensorflow==1.3.0
import tensorflow as tf
print("You are using Tensorflow",tf.__version__)
!git clone https://github.com/keithito/tacotron.git
cd tacotron
pip install -r requirements.txt
!curl https://data.keithito.com/data/speech/tacotron-20180906.tar.gz | tar xzC /tmp
!python demo_server.py --checkpoint /tmp/tacotron-20180906/model.ckpt #requires localhost

不幸的是,在本地模式下运行从谷歌Colab将不会帮助我,因为要做到这一点,我需要下载的数据在我的机器是太大了。
下面是我的最后一个输出,在这里我应该打开localhost:8888来完成工作,所以正如我之前提到的,有没有办法在Google Colaboratory中运行localhost?

kmbjn2e3

kmbjn2e31#

您可以使用工具,如ngrok或remote.it
他们给予你一个URL,你可以从任何浏览器访问你的Web服务器上运行的8888
实施例1:隧道化Tensor板在

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip

get_ipython().system_raw('tensorboard --logdir /content/trainingdata/objectdetection/ckpt_output/trainingImatges/ --host 0.0.0.0 --port 6006 &')

get_ipython().system_raw('./ngrok http 6006 &')

! curl -s http://localhost:4040/api/tunnels | python3 -c \
 "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

在colab上运行这个install ngrok,并创建一个类似http://c11e1b53.ngrok.io/的链接
NGROK文件

rseugnpd

rseugnpd2#

另一种使用ngrok运行可公开访问的服务器的方法:

!pip install pyngrok --quiet
from pyngrok import ngrok

# Terminate open tunnels if exist
ngrok.kill()

# Setting the authtoken (optional)
# Get your authtoken from https://dashboard.ngrok.com/auth
NGROK_AUTH_TOKEN = ""
ngrok.set_auth_token(NGROK_AUTH_TOKEN)

# Open an HTTPs tunnel on port 5000 for http://localhost:5000
public_url = ngrok.connect(port="5000", proto="http", options={"bind_tls": True})
print("Tracking URL:", public_url)
axzmvihb

axzmvihb3#

您可以使用localtunnel将端口暴露给公共Internet。
安装本地通道:

!npm install -g localtunnel

启动localtunnel:

!lt --port 8888

导航到它返回的URL以访问您的Web UI。

sf6xfgos

sf6xfgos4#

我确实在ngrok的帮助下将我的Dockercontainer在我的本地主机上运行一个elasticsearch示例连接到了google colab。通过ngrok,你可以创建一个url,在这个url下,运行在你本地主机上的elasticsearch集群是公开可用的(一个所谓的隧道)。我跟踪了this tutorial

首先需要安装ngrok。

对于MacOS,使用HomeBrew:

brew install ngrok/ngrok/ngrok

对于Linux,使用Apt:

curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | \
  sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && \
  echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | \
  sudo tee /etc/apt/sources.list.d/ngrok.list && \
  sudo apt update && sudo apt install ngrok

对于Windows,使用Chocolatey:

choco install ngrok

然后使用您的身份验证令牌设置ngrok

为此,您需要注册here的ngrok帐户。在那里,您将获得一个验证令牌。然后运行以下命令

ngrok config add-authtoken TOKEN

并将“TOKEN”替换为您的真实令牌。

现在可以通过以下命令启动ngrok了。

ngrok http PORTNUMBER

将“PORTNUMBER”替换为您要连接的本地主机的端口。
现在你应该在你的终端中看到类似这样的东西:

Session Status                online
Account                       inconshreveable (Plan: Free)
Version                       3.0.0
Region                        United States (us)
Latency                       78ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://84c5df439d74.ngrok-free.dev -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

现在您可以使用'forwarding'下提供的url连接到本地主机。

由于全世界都可以访问此URL,因此我们需要快速保护它。

停止ngrok进程(crtl + c)并运行:

ngrok http PORTNUMBER --basic-auth 'username:password'

现在您可以在google colab中使用此URL连接到localhost

在我的google-colab项目中,我连接了一个运行elasticsearch的docker容器,如下所示:

es = Elasticsearch(
    hosts=[{
        'host': 'c04c-89-128-141-226.ngrok-free.app',
        'port': 443,
        'scheme': 'https',
    }],
    basic_auth=('username', 'password')
)

这只是一个例子,对于你的使用情况显然会有所不同。

相关问题