すごいひまつぶし

メモ書き用

Windows11からVisual Studio Codeを使ってLinuxにリモート接続する方法

こんにちは!えねこのきつねです!

今回は、タイトルの通りリモート接続する方法を記載します。

※画像はイメージ図です。

 

 

目次

pingで接続を確認

② Windows11からVisual Studio Codeを使用して接続確認

 

以下、手順です。

========================================

pingで接続を確認(設定画面から確認する場合)

まずは、ネットワークを使用しているipを確認します。

Windows

※100.XXX.XXX.XXXとします

Linux
ターミナルからhostname -Iコマンドより、アドレスを取得します。

Linux側のipアドレスを100.YYY.YYY.YYYとします

この後、pingコマンドを使用して、互いに通信できるかを確認します。

 

Windows側→Linuxへ通信

Linux側のipアドレス(100.YYY.YYY.YYY)が通るかを確認します。

ターミナルから、「ping 100.YYY.YYY.YYY」を入力

以下の画像のように通信できれば成功です。

 

Linux側→Windowsへ通信

Windows側のipアドレス(100.XXX.XXX.XXX)が通るかを確認します。

以下の画像のように通信できれば成功です。

 

② Windows11からVisual Studio Codeを使用して接続確認

まずは、Visual Studio Codeを開いて設定ファイルを開きます。

設定ファイルを開く手順は以下のとおりです。

1. CTRL + SHIFT + Pを押下
2. "Remote-SSH: Open Configuration File"を選択

3. 赤枠を選択(水色にはユーザー名が書かれているはず)

4. 以下のように設定して保存
(画像は例なので、実際には自身のホスト名、ipアドレス、ユーザ名を設定)

 

この後、以下のようにクリックします。

 

自身で設定したHostの名称が表示されるのでクリックします。
※なければVisualStudioCodeをすべて閉じた後、再度確認してください。

 

新しくVisualStudioCodeが立ち上がり、パスワードが求められるので
普段Linuxでログインしているユーザーのパスワードを入力します。

 

リモートに接続できれば、以下のような画面が出ます。


ディレクトリ配下を設定すれば完了です。


以上です。お疲れさまでした。

 

UbuntuにQt4を構築する方法

復習用。Qt4で構築する用。

 

公式リポジトリにqt4-qmakeが含まれているため、Ubuntu 18.04を使用。

 

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y wget build-essential ibssl1.0-dev qt4-qmake

sudo apt-get install -y \
    libx11-dev \
    libxext-dev \
    libxtst-dev \
    libxi-dev \
    libxrender-dev \
    libxcb1-dev \
    libx11-xcb-dev \
    libxau-dev \
    libxdmcp-dev
    
sudo mkdir /inst
sudo mkdir -p /src/qt

cd /inst

sudo wget https://download.qt.io/new_archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz -O qt.tar.gz
sudo tar -xzf qt.tar.gz -C /src/qt --strip-components 1

cd /src/qt

sudo ./configure -prefix /usr/local/qt -release -opensource -confirm-license \
    -no-declarative \
    -no-accessibility -no-qt3support \
    -no-script -no-scripttools \
    -no-javascript-jit -no-audio-backend \
    -no-sql-mysql -no-sql-sqlite \
    -nomake tests -nomake plugins

sudo make -j"$(nproc)" 
sudo make install

ここで環境変数を定義し、Ubuntuを再起動する

(例: 置き方)

vi ~/.bashrc


適応できた場合、以下のように表示される


以上で構築完了。

使用例を閲覧する用。

cp -R /src/qt/examples/ ~/(どこかのディレクトリ)/qt4_example


以上。

Ubuntu上にDockerを用意する方法

忘れそうなので書き込んでおきます。

Ubuntuを立ち上げた後、Dockerをインストールします。

参考
docs.docker.com


以下を実行する。

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerコマンドを実行する際に管理者権限(sudo)を使わずに済むようにするために、以下を実行する。

sudo usermod -aG docker $USER

その後、Ubuntuを再起動し、idコマンドでdockerが存在することを確認する。

以上

 

pandasのgroupbyで指定したカラムごとの累積を作成してみた

こんにちは!
えねこのきつねです!

今回、特定の値毎に累積を詰めないかな?ということで作成してみました。

以下がpythonのソースとなります。


import numpy as np
import pandas as pd
import random 

np.random.seed(1)  # seedを1で固定
pd.set_option('display.max_rows', None) # すべての行を表示

tekitou_df = pd.DataFrame()
tekitou_df["column1"] = [int(i%10)+1 for i in range(100)]
tekitou_df["number"] = np.random.choice([0, 1], size=100)
# すべて1、0で置いたケースを作成 (確認用)
tekitou_df.loc[tekitou_df["column1"] == 1, "number"] = 1
tekitou_df.loc[tekitou_df["column1"] == 10, "number"] = 0 
# column1行の、数値の種類ごとにカウント
tekitou_df['column1_cumcount'] = tekitou_df.groupby(['column1']).cumcount() + 1
# number_cumcount
tekitou_df['number_cumsum_by_column1'] = tekitou_df.groupby(['column1'])['number'].cumsum()
tekitou_df.sort_values(["column1", "column1_cumcount"])

 

column1_cumcountでcolumn1の出現?回数を累積し、

number_cumsum_by_column1では、column1毎のnumberを累積しています。

 

イメージ図

以上、復習用でした!

Docker上でJupyterLabを起動し、GPUありでLightGBMを動かす方法

こんにちは!
えねこのきつねです!

今回は、機械学習の分野で人気のあるライブラリ「LightGBM」をDocker上で動かす方法についてお話しします。  
...とはいっても、Dockerの構築は最近触り始めたので細かな部分はご了承ください...💦

LightGBMは、Microsoftが開発した勾配ブースティングフレームワークで、特に大規模なデータセットに対して高速かつ高精度なモデルを提供することで知られています。GPUを活用することで、さらにそのパフォーマンスを引き出すことができます。

これから、Dockerでのセットアップ手順や、GPU対応のLightGBM環境の構築方法について説明していきますので、ぜひ最後までお付き合いください。

前提条件

Dockerがインストールされていること
NVIDIAGPUドライバが正しくインストールされていること

GPU対応のLightGBM環境の設定方法

Microsoftが公開しているLightGBMのGPU対応Dockerfileを利用することで、GPUを活用したLightGBM環境を構築できます。しかし、このDockerfileをそのまま使用するとエラーが発生します。以下の手順に従って、環境を構築しましょう。


1. Dockerfileの取得と編集

まず、以下のリンクからGPU対応のLightGBMのDockerfileを取得します:

https://github.com/microsoft/LightGBM/blob/master/docker/gpu/dockerfile.gpu

しかし、このままだと使えません。

実際に動かしてみましょう。(以下の画像参照)

コマンド:docker build -t dockerfile.gpu -f dockerfile.gpu .

nvidia/cuda:8.0-cudnn5-devel」を取得しようとすると、そのようなものはないと怒られてしまいます。


2. 現在のCUDAバージョンの確認

以下のコマンドで現在のCUDAバージョンを確認します。
今回の例では、CUDA Version 12.2がインストールされています。

コマンド:nvidia-smi

このDockerfileをそのまま使おうとすると、古いCUDAバージョンが原因でエラーが発生します。現在の環境に合わせてCUDAのバージョンを変更する必要があります。

 

3. 適切なCUDAバージョンのDockerイメージを探す

以下のサイトから自身の環境にあったnvidia/cudaを探すことができます。

https://hub.docker.com/r/nvidia/cuda/tags

今回は「nvidia/cuda:12.0.0-cudnn8-devel-ubuntu22.04」を使用します。

4. Dockerfileの編集

Dockerfileの1行目、FROMの部分を以下のように変更します。(以下の画像参照)

 

Dockerfileを保存し、以下のコマンドでDockerイメージをビルドします。
(以下の画像参照)
コマンド:docker build -t dockerfile.gpu -f dockerfile.gpu .

ビルドには約10分かかります。

docker imagesで確認
5. Dockerコンテナの実行

以下のコマンドでDockerコンテナを実行します。

(以下の画像参照)

コマンド:docker run -d --rm --gpus all --volume "${PWD}":/opt/training --workdir /opt/training --name dockerfile.gpu -p 10001:8888 dockerfile.gpu

エラーが発生していないことを確認し、ブラウザからJupyterにアクセスします。

http://localhost:10001/

(パスワードはDockerfileに記載されています。)

 

6. JupyterLabでのLightGBMの使用


JupyterLab内でLightGBMをインポートし、パラメータに'device': 'gpu'を定義することでGPUを利用したLightGBMが動作します。

 

以上の手順で、GPU対応のLightGBM環境を構築できます。

はじめまして!

初めまして。えねこのきつねと申します。

これからこのブログでは、主にPythonプログラミングやお絵描きに関する趣味について書いていこうと思います。プログラミングに関する技術的な内容や、絵を描く過程・作品紹介など、様々なトピックを取り上げていく予定です。

どうぞよろしくお願いします!

 

今回は端的ですがこの辺で〜!