Installing and running
dstack is very easy:
pip install --index-url https://test.pypi.org/simple/ --upgrade --no-cache-dir --extra-index-url=https://pypi.org/simple/ dstack==0.6dev29dstack server start
If you run it for the first time, it may take a while. Once it's done, you'll see the following output:
$ dstack server startTo access the application, open this URL in the browser: http://localhost:8080/auth/verify?user=dstack&code=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&next=/The default profile in "~/.dstack/config.yaml" is already configured. You are welcome to push your data using Python or R packages.What's next?------------- Checkout our documentation: https://docs.dstack.ai- Ask questions and share feedback: https://discord.gg/8xfhEYa- Star us on GitHub: https://github.com/dstackai/dstack
If you open the URL, you'll see the following interface:
You're logged as the
dstack user. The current page is
Applications. It shows you all published applications which you have access to. The sidebar on the left lets you open other pages:
Now let's build a simple application to see how
dstack works in action.
Here's an elementary example of using
dstack. The application takes real-time stock exchange data from Yahoo Finance for the FAANG companies and renders it for a selected symbol.
Here's the Python code that you have to run to make such an application:
from datetime import datetime, timedeltaimport dstack.controls as ctrlimport dstack as dsimport plotly.graph_objects as goimport pandas_datareader.data as webdef get_chart(symbols: ctrl.ComboBox):start = datetime.today() - timedelta(days=30)end = datetime.today()df = web.DataReader(symbols.value(), 'yahoo', start, end)fig = go.Figure(data=[go.Candlestick(x=df.index, open=df['Open'], high=df['High'], low=df['Low'], close=df['Close'])])return figapp = ds.app(get_chart, symbols=ctrl.ComboBox(["FB", "AMZN", "AAPL", "NFLX", "GOOG"]))result = ds.push("faang", app)print(result.url)
If you run it and click the provided URL, you'll see the application:
The user is prompted to choose one of the companies to view its latest market data in form of a candlestick chart.
Let's take a closer look at this code and describe every step.
First, we define the function
get_chart that takes the argument
symbols of the type
ctrl.ComboBox. The argument represents a combo box in which the user selects a stock symbol (e.g.
"AMZN", etc). Based on the selected symbol (see
symbols.value()), the function fetches the market data for the corresponding stock (from the Yahoo Financial Services – using the
pandas_datareader package), makes a Candlestick chart (using the
plotly package), and returns the resulting figure.
def get_chart(symbols: ctrl.ComboBox):start = datetime.today() - timedelta(days=30)end = datetime.today()df = web.DataReader(symbols.value(), 'yahoo', start, end)fig = go.Figure(data=[go.Candlestick(x=df.index, open=df['Open'], high=df['High'], low=df['Low'], close=df['Close'])])return fig
User controls and application
Once the function is defined, we call the function
dstack.app where we pass our function that produces the output and assigns an instance of
ctrl.ComboBox into the argument named
symbols. This call creates an instance of an application. The application contains information on the function that produces the visualizations and binds an instance
ctrl.ComboBox to the name of the argument of the function (
app = ds.app(get_chart, symbols=ctrl.ComboBox(["FB", "AMZN", "AAPL", "NFLX", "GOOG"]))
Finally, we deploy our application to the
dstack server by using the function
dstack.push. The arguments of the call are
"faang" – the name of the application, and
app – the instance of our application. If successful, this call returns a push result that has an attribute
url. This is the URL of the deployed application.
result = ds.push("faang", app)print(result.url)
If we click the URL, we'll see the application.
To learn in more detail about what applications consist of and how to use all their features, check out the Concepts page.
To see other examples, please check out the Tutorials page.